From b47d0dcd483a150a78eb34caf227a27d07df8a8d Mon Sep 17 00:00:00 2001 From: Celestora Date: Thu, 14 Oct 2021 13:35:17 +0300 Subject: [PATCH] Support: WIP: Add support agent name customization --- Web/Models/Entities/SupportAlias.php | 39 +++++++++++++++++ Web/Models/Entities/TicketComment.php | 41 ++++++++++++++++-- Web/Models/Repositories/SupportAliases.php | 13 ++++++ .../templates/Support/AnswerTicket.xml | 6 +-- Web/Presenters/templates/Support/View.xml | 11 +++-- Web/static/img/support.jpeg | Bin 0 -> 2463 bytes install/sqls/00002-support-aliases.sql | 1 + 7 files changed, 101 insertions(+), 10 deletions(-) create mode 100644 Web/Models/Entities/SupportAlias.php create mode 100644 Web/Models/Repositories/SupportAliases.php create mode 100644 Web/static/img/support.jpeg create mode 100644 install/sqls/00002-support-aliases.sql diff --git a/Web/Models/Entities/SupportAlias.php b/Web/Models/Entities/SupportAlias.php new file mode 100644 index 00000000..9ad618a6 --- /dev/null +++ b/Web/Models/Entities/SupportAlias.php @@ -0,0 +1,39 @@ +get($this->getRecord()->agent); + } + + function getName(): string + { + return $this->getRecord()->name; + } + + function getIcon(): ?string + { + return $this->getRecord()->icon; + } + + function shouldAppendNumber(): bool + { + return (bool) $this->getRecord()->numerate; + } + + function setAgent(User $agent): void + { + $this->stateChanges("agent", $agent->getId()); + } + + function setNumeration(bool $numerate): void + { + $this->stateChanges("numerate", $numerate); + } +} diff --git a/Web/Models/Entities/TicketComment.php b/Web/Models/Entities/TicketComment.php index 25568bc7..9cbc4716 100644 --- a/Web/Models/Entities/TicketComment.php +++ b/Web/Models/Entities/TicketComment.php @@ -4,7 +4,7 @@ use openvk\Web\Util\DateTime; use Nette\Database\Table\ActiveRow; use openvk\Web\Models\RowModel; use Chandler\Database\DatabaseConnection; -use openvk\Web\Models\Repositories\Users; +use openvk\Web\Models\Repositories\{Users, SupportAliases}; use Chandler\Database\DatabaseConnection as DB; use Nette\InvalidStateException as ISE; use Nette\Database\Table\Selection; @@ -12,7 +12,12 @@ use Nette\Database\Table\Selection; class TicketComment extends RowModel { protected $tableName = "tickets_comments"; - + + private function getSupportAlias(): ?SupportAlias + { + return (new SupportAliases)->get($this->getUser()->getId()); + } + function getId(): int { return $this->getRecord()->id; @@ -26,7 +31,34 @@ class TicketComment extends RowModel function getUser(): User { return (new Users)->get($this->getRecord()->user_id); - } + } + + function getAuthorName(): string + { + if($this->getUType() === 0) + return $this->getUser()->getCanonicalName(); + + $alias = $this->getSupportAlias(); + if(!$alias) + return OPENVK_ROOT_CONF["openvk"]["preferences"]["support"]["supportName"] . " №" . $this->getAgentNumber(); + + $name = $alias->getName(); + if($alias->shouldAppendNumber()) + $name .= " №" . $this->getAgentNumber(); + + return $name; + } + + function getAvatar(): string + { + if($this->getUType() === 0) + return $this->getUser()->getAvatarUrl(); + + $default = "/assets/packages/static/openvk/img/support.jpeg"; + $alias = $this->getSupportAlias(); + + return is_null($alias) ? $default : ($alias->getIcon() ?? $default); + } function getAgentNumber(): ?string { @@ -46,6 +78,9 @@ class TicketComment extends RowModel if(is_null($agent = $this->getAgentNumber())) return NULL; + if(!is_null($this->getSupportAlias())) + return 0; + $agent = (int) $agent; $rotation = $agent > 500 ? ( ($agent * 360) / 999 ) : $agent; # cap at 360deg $values = [0, 45, 160, 220, 310, 345]; # good looking colors diff --git a/Web/Models/Repositories/SupportAliases.php b/Web/Models/Repositories/SupportAliases.php new file mode 100644 index 00000000..cb1a2521 --- /dev/null +++ b/Web/Models/Repositories/SupportAliases.php @@ -0,0 +1,13 @@ +toEntity($this->table->where("agent", $agent)->fetch()); + } +} diff --git a/Web/Presenters/templates/Support/AnswerTicket.xml b/Web/Presenters/templates/Support/AnswerTicket.xml index 68194810..8b3f9313 100644 --- a/Web/Presenters/templates/Support/AnswerTicket.xml +++ b/Web/Presenters/templates/Support/AnswerTicket.xml @@ -15,7 +15,7 @@
Автор: {$ticket->getUser()->getFullName()} | {$ticket->getUser()->getRegistrationIP()} | Статус: {$ticket->getStatus()}
- {$ticket->getContext()} + {$ticket->getContext()|noescape}

@@ -50,7 +50,7 @@ {else} {/if} @@ -66,7 +66,7 @@ {elseif ($comment->getUType() === 1)} {/if} diff --git a/Web/static/img/support.jpeg b/Web/static/img/support.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ccf42a1240416664ed41e0079c8a5ff33c933433 GIT binary patch literal 2463 zcmbW2c~nzL7KaOx5Ed1p1hf_6f+C`#;EI@x(um>`cac%j;u37=Mnz;x@5f7SO?n%Bm#IW&{*u(SQp{0L4InBtT4jFYooEdrr@s`D)U_%*{;ACmWNKOwKSl3eTqasNY@wrwaQOP)vaucc2Q*wK=?`__ zpJrrCnABrxW^REylv)8}BU~zxFew!G=HmT;NFhz1w{nxoj6KK5^UqqlUQEq3U9h>N zhPt;+<=_@@F2>B<#&+hcZx$|cT_T`%WK`^>%W?4ui9e;KU%P%I<7Q@7UjFT0?i3Uj-F^7zacNn3MP*fO zU46qd@$<%}_KwciZzNsaZ{@vx{U1LKd{zvqHDluw+Ali&*GVoTK=?E0e}Mf57X{}s zCK3rm@+6m$aX4NG6e4NfN|WiE_K=UAoiX3_qN(-f)ZCI9vjuK@Rn&lUZRR!(tKTSXng8Hz{s%e+_A@8K#wD2p9?-C)FMc>2o{en4K+MlN zTdl;9w3%On+U?o1yvjKMX4mMAww-}6rI5Uq+5%DIL_?r zvX#Eiq3>JHjSgW5qg7cd~Z#R3j?PZ6ms*ZN+o)I2=J4``)3?Vias96KNh_mIX&PzR} zz0rm^sm-0Yx}19ONTn6rRmL6DgycMX8?i5nH+ITka8?g!nHY%mL+#L3>0?GMl+0Ue zDCT&oLz$|Kgka9jV{+JqB+fV7A8a|FV_i`JpKM#HPsnbgSR}h%AIAVfC7@IFx^N7T zzR@92put)DlSD|27#a00Z4dKh)tw!>;1}P0F?m)Q_s;7+ZrnN)E_lvYF}l=8*2}Mk zChU%*i(aqasK*1Ogql+f5A;pG2t3$Pq&zmv5RCHgh#oQ#>sakFL**wmj}I^BM75!g zgIV)8e=Uwx_{Cih`!PMFOI^dAGEJdjv}Cut!_lWO-~x@Vf$Vs$7^ra+$&y)?knCm@ zyP@<-Z$qoNm8yFY z$CQHS>&7h7cE4mZ=N7M*)9VM+7*JSYpxv^d@!oOAxB;8LqZmA|87hKxO2WQi=SiYrpZ z{R2TFQ~WdW@wXj zqp&Ab;{^qzP&g5WJmErJvmf&c-8M^lKus?Sy(>P((B3w2ott*FMEoQmcymIc(piI6 zF{TcE6Hhxy zf&O@gLFA@~Xtx5+9;p5$l0W2vi(jlOQVV1SN(StWcpI`gPEc>_)u`~ek=yM^W-e37 zRlvi$m>b(@$_IwLA$BWTFv9(cMB~V(8G$bE4)ujA_3D$1zz@;&QX3vc@%8Zqp_Tes zY45tQonFhwgk#&UH&=J$g_Nf{WN+|znWzaS45sLol7|noX$a+!m_|ir6?UC2r`bGp z$_>o2ymjHmtM`kl=WIY4r2+G~G128cqaTs$dR(i?1Km&qWWm`E`|z6WSF0Iy7S(P? z%1hM+@xzayIe}Gm;xO{pWuN9gtjxqfM4B(hAbjDB!15Mb3?zkQ9xB>m-%b@u#UtlJ zHBc-D(iy(uPkdFmx6~k=ry(PDT)|;qUJvb2VOy95Y&q*N;vCZ(eI+OKeVbh?PQTFIT z2Ceq9U~rB?-#|sY_V{}vJ`w`-iiR>-IIuegBv&OUM6%w)dc|&{No*0S_nuA%d^@8c zSz1YJc-YdNP+rJkhZaMY&EN5Fh2v;8A!z06)(n4O$nMh~jh|ldEai4YE{*n#QR1>V zPn4#i>DN|@b!rhDsilhgPkN*8=@B^E`|S==)q#+A0o(ky;R{?Uv0WxXJ!FEWyNd;% enbR=PpYtmuNx*LgJ#+;IB5&^TqH4($tot{EJI9Xz literal 0 HcmV?d00001 diff --git a/install/sqls/00002-support-aliases.sql b/install/sqls/00002-support-aliases.sql new file mode 100644 index 00000000..b586a1dd --- /dev/null +++ b/install/sqls/00002-support-aliases.sql @@ -0,0 +1 @@ +CREATE TABLE `support_names` ( `agent` BIGINT UNSIGNED NOT NULL , `name` VARCHAR(512) NOT NULL , `icon` VARCHAR(1024) NULL DEFAULT NULL , `numerate` BOOLEAN NOT NULL DEFAULT FALSE , PRIMARY KEY (`agent`)) ENGINE = InnoDB; \ No newline at end of file