src/Entity/SmsSpotHitStatus.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\Abstracts\SpotHitStatus;
  4. use App\Traits\DateTrait;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Symfony\Component\Validator\Constraints as Assert;
  7. use Symfony\Component\Validator\Context\ExecutionContextInterface;
  8. /**
  9. * @ORM\Entity
  10. */
  11. class SmsSpotHitStatus extends SpotHitStatus
  12. {
  13. use DateTrait;
  14. const STATUT_EN_ATTENTE = 0;
  15. const STATUT_LIVRE = 1;
  16. const STATUT_ENVOYE = 2;
  17. const STATUT_EN_COURS = 3;
  18. const STATUT_ECHEC = 4;
  19. const STATUT_EXPIRE = 5;
  20. /**
  21. * @var int|null
  22. *
  23. * @ORM\Column(type="integer")
  24. * @ORM\Id
  25. * @ORM\GeneratedValue(strategy="AUTO")
  26. */
  27. protected ?int $id = null;
  28. /**
  29. * @var integer|null
  30. *
  31. * Identifiant unique du message pour ce numéro
  32. *
  33. * @ORM\Column(type="integer", nullable=true)
  34. *
  35. * @Assert\GreaterThan(0)
  36. * @Assert\Type(type="integer")
  37. */
  38. protected ?int $idAccuse = null;
  39. /**
  40. * @var integer|null
  41. *
  42. * Identifiant commun en cas d'envoi d'un message groupé.
  43. *
  44. * @ORM\Column(type="integer", nullable=true)
  45. *
  46. * @Assert\GreaterThan(0)
  47. * @Assert\Type(type="integer")
  48. */
  49. protected ?int $idMessage = null;
  50. /**
  51. * @var string
  52. *
  53. * @ORM\Column(type="string")
  54. *
  55. * @Assert\Type(type="string")
  56. * @Assert\NotBlank
  57. */
  58. protected string $numero = '';
  59. /**
  60. * @var integer
  61. *
  62. * 0 = En attente
  63. * Le SMS est en attente d'envoi, généralement il concerne une campagne programmée
  64. * 1 = Livré
  65. * Le SMS a bien été livré sur un mobile allumé. Avec 95% de taux de lecture moyen (étude Médiamétrie AFMM), il est fort probable qu'il soit également lu par le destinataire dans les minutes qui suivent la réception
  66. * 2 = Envoyé
  67. * Le SMS a bien été envoyé sur un numéro valide, mais le mobile est pour l’instant injoignable (éteint, pas de réseau, SIM pleine...). Durant 48h, les opérateurs essayent de livrer à nouveau le SMS sur le mobile. Si ce dernier reste injoignable après ce délai, le statut se transformera en « expiré »
  68. * 3 = En cours
  69. * Le SMS est en cours d'envoi, ce statut évoluera rapidement
  70. * 4 = Echec
  71. * Le SMS a expiré, car le mobile du destinataire reste injoignable après 48h. Le numéro de téléphone est annoncé valide par les opérateurs, si le mobile est de nouveau joignable lors des prochaines campagnes le SMS sera correctement reçu
  72. * 5 = Expiré
  73. * Le SMS n'a pas pu être délivré, car le numéro est annoncé inaccessible par les opérateurs
  74. *
  75. * (Les statuts 1, 4 et 5 sont définitifs.)
  76. *
  77. * @ORM\Column(type="integer")
  78. *
  79. * @Assert\Choice({0, 1, 2, 3, 4, 5})
  80. * @Assert\Type(type="integer")
  81. */
  82. protected int $statut = self::STATUT_EN_ATTENTE;
  83. /**
  84. * @var \DateTime|null
  85. *
  86. * @ORM\Column(type="datetime")
  87. *
  88. * @Assert\Type(type="\DateTime")
  89. * @Assert\NotBlank
  90. */
  91. protected ?\DateTime $dateEnvoi = null;
  92. /**
  93. * @var \DateTime|null
  94. *
  95. * Date de dernière mise à jour du statut
  96. *
  97. * @ORM\Column(type="datetime")
  98. *
  99. * @Assert\Type(type="\DateTime")
  100. * @Assert\NotBlank
  101. */
  102. protected ?\DateTime $dateUpdate = null;
  103. /**
  104. * @var integer
  105. *
  106. * Statut détaillé de 0 à 9999 (détails à demander au gestionnaire de compte)
  107. *
  108. * @ORM\Column(type="integer")
  109. *
  110. * @Assert\Length(min=0, max=9999)
  111. * @Assert\Type(type="integer")
  112. */
  113. protected int $statutCode = -1;
  114. /**
  115. * @var SmsSpotHitCampaign|null
  116. *
  117. * @ORM\ManyToOne(targetEntity="SmsSpotHitCampaign")
  118. * @ORM\JoinColumn(nullable=false)
  119. *
  120. * @Assert\Valid
  121. * @Assert\Type(type="App\Entity\smsSpotHitCampaign")
  122. * @Assert\NotBlank
  123. */
  124. protected ?SmsSpotHitCampaign $campaign = null;
  125. /**
  126. * @Assert\Callback
  127. */
  128. public function validate(ExecutionContextInterface $context)
  129. {
  130. if(empty($this->idAccuse) && empty($this->idMessage))
  131. {
  132. $context->buildViolation("L'identifiant du sms doit être renseigné")
  133. ->atPath('idAccuse')
  134. ->addViolation();
  135. }
  136. }
  137. /**
  138. * @return int|null
  139. */
  140. public function getId(): ?int
  141. {
  142. return $this->id;
  143. }
  144. /**
  145. * @return int|null
  146. */
  147. public function getIdAccuse(): ?int
  148. {
  149. return $this->idAccuse;
  150. }
  151. /**
  152. * @param int|null $idAccuse
  153. * @return $this
  154. */
  155. public function setIdAccuse(?int $idAccuse): SmsSpotHitStatus
  156. {
  157. $this->idAccuse = $idAccuse;
  158. return $this;
  159. }
  160. /**
  161. * @return int|null
  162. */
  163. public function getIdMessage(): ?int
  164. {
  165. return $this->idMessage;
  166. }
  167. /**
  168. * @param int|null $idMessage
  169. * @return $this
  170. */
  171. public function setIdMessage(?int $idMessage): SmsSpotHitStatus
  172. {
  173. $this->idMessage = $idMessage;
  174. return $this;
  175. }
  176. /**
  177. * @return string
  178. */
  179. public function getNumero(): string
  180. {
  181. return $this->numero;
  182. }
  183. /**
  184. * @param string $numero
  185. * @return $this
  186. */
  187. public function setNumero(string $numero): SmsSpotHitStatus
  188. {
  189. $this->numero = $numero;
  190. return $this;
  191. }
  192. /**
  193. * @return int
  194. */
  195. public function getStatut(): int
  196. {
  197. return $this->statut;
  198. }
  199. /**
  200. * @param int $statut
  201. * @return $this
  202. */
  203. public function setStatut(int $statut): SmsSpotHitStatus
  204. {
  205. $this->statut = $statut;
  206. return $this;
  207. }
  208. /**
  209. * @return \DateTime|null
  210. */
  211. public function getDateEnvoi(): ?\DateTime
  212. {
  213. return $this->dateEnvoi;
  214. }
  215. /**
  216. * @param \DateTime|null $dateEnvoi
  217. * @return $this
  218. */
  219. public function setDateEnvoi(?\DateTime $dateEnvoi): SmsSpotHitStatus
  220. {
  221. $this->dateEnvoi = $dateEnvoi;
  222. return $this;
  223. }
  224. /**
  225. * @return \DateTime|null
  226. */
  227. public function getDateUpdate(): ?\DateTime
  228. {
  229. return $this->dateUpdate;
  230. }
  231. /**
  232. * @param \DateTime|null $dateUpdate
  233. * @return $this
  234. */
  235. public function setDateUpdate(?\DateTime $dateUpdate): SmsSpotHitStatus
  236. {
  237. $this->dateUpdate = $dateUpdate;
  238. return $this;
  239. }
  240. /**
  241. * @return int
  242. */
  243. public function getStatutCode(): int
  244. {
  245. return $this->statutCode;
  246. }
  247. /**
  248. * @param int $statutCode
  249. * @return $this
  250. */
  251. public function setStatutCode(int $statutCode): SmsSpotHitStatus
  252. {
  253. $this->statutCode = $statutCode;
  254. return $this;
  255. }
  256. /**
  257. * @return SmsSpotHitCampaign|null
  258. */
  259. public function getCampaign(): ?SmsSpotHitCampaign
  260. {
  261. return $this->campaign;
  262. }
  263. /**
  264. * @param SmsSpotHitCampaign $campaign
  265. *
  266. * @return $this
  267. */
  268. public function setCampaign(SmsSpotHitCampaign $campaign): SmsSpotHitStatus
  269. {
  270. $this->campaign = $campaign;
  271. return $this;
  272. }
  273. }