PluginProbe
Depicter — Popup & Slider Builder / trunk
Depicter — Popup & Slider Builder vtrunk
4.8.1 trunk 1.0.0 1.1.0 1.1.2 1.1.4 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.5 1.3.8 1.5.0 1.5.1 1.5.2 1.5.5 1.6.0 1.6.1 1.6.2 1.7.0 All 76 releases
depicter / app / src / Database / Repository / LeadFieldRepository.php

LeadFieldRepository.php in Depicter — Popup & Slider Builder trunk, at app/src/Database/Repository/LeadFieldRepository.php

160 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Depicter\Database\Repository;
4
5 use Depicter\Database\Entity\LeadField;
6 use TypeRocket\Utility\Arr as TypeRocketArr;
7
8 class LeadFieldRepository
9 {
10
11 /**
12 * List of known field names in form element
13 */
14 const KNOWN_FORM_FIELD_NAMES = ['name', 'email', 'first-name', 'last-name', 'phone', 'address', 'website', 'message'];
15
16
17 /**
18 * @var LeadField LeadField
19 */
20 private $leadField;
21
22
23 /**
24 * @throws \Exception
25 */
26 public function __construct(){
27 $this->leadField = LeadField::new();
28 }
29
30 /**
31 * @return LeadField
32 *
33 * @throws \Exception
34 */
35 public function leadField(): LeadField{
36 return LeadField::new();
37 }
38
39 /**
40 * Removes a lead.
41 *
42 * @param $id
43 *
44 * @return array|false|int|object|void|null
45 * @throws \Exception
46 */
47 public function delete( $id ){
48 if( $leadField = $this->leadField()->findById( $id ) ){
49 return $leadField->delete();
50 }
51 }
52
53 /**
54 * Delete lead fields by lead id
55 * @param $leadId
56 *
57 * @return void
58 * @throws \Exception
59 */
60 public function deleteByLeadId( $leadId ){
61 $leadFields = $this->leadField()->where( 'lead_id', $leadId )->findAll()->get();
62 if ( $leadFields ) {
63 foreach ( $leadFields as $leadField ) {
64 $leadField->delete();
65 }
66 }
67 }
68
69 /**
70 * Create a lead record
71 *
72 * @param int $leadId
73 * @param string $fieldName
74 * @param string $fieldValue
75 * @param string $fieldType
76 *
77 * @return mixed
78 * @throws \Exception
79 */
80 public function create( $leadId, $fieldName, $fieldValue, $fieldType = '' ) {
81 return $this->leadField()->create([
82 'lead_id' => $leadId,
83 'name' => $fieldName,
84 'value' => $fieldValue,
85 'type' => $fieldType,
86 'created_at' => $this->leadField()->currentDateTime(),
87 'updated_at' => $this->leadField()->currentDateTime()
88 ]);
89 }
90
91 /**
92 * Update a meta by relation, relation ID and meta key
93 *
94 * @param $id
95 * @param array $fields
96 *
97 * @return mixed
98 * @throws \Exception
99 */
100 public function update( $id, array $fields = [] ) {
101 if ( empty( $fields ) ) {
102 return false;
103 }
104
105 $leadField = $this->leadField()->findById( $id );
106
107 if ( $leadField && $leadField->count() ){
108 return $leadField->first()->update($fields);
109 }
110
111 return false;
112 }
113
114 /**
115 * Get meta value by relation, relation ID and meta key
116 *
117 * @param $id
118 *
119 * @return array
120 * @throws \Exception
121 */
122 public function get( $id ): array{
123 $leadField = $this->leadField()->findById($id)->get();
124
125 return $leadField ? $leadField->first()->toArray() : [];
126 }
127
128 /**
129 * Queries records of leads with specified fields
130 *
131 * @param $columns
132 *
133 * @return LeadField
134 * @throws \Exception
135 */
136 public function select( $columns = [] ) {
137 $entity = LeadField::new();
138 $columns = !empty( $columns ) ? $columns : $entity->getTableColumns();
139 return $entity->select( $columns );
140 }
141
142
143 /**
144 * Finds field names for lead id(s)
145 *
146 * @param int|array $leadIds
147 *
148 * @return array
149 * @throws \Exception
150 */
151 public function getFieldNamesByLeadId( $leadIds ){
152 if( ! $leadIds = (array) $leadIds ){
153 return [];
154 }
155 $leadFieldNames = $this->leadField->select('name')->where('lead_id', 'IN', $leadIds )->findAll()->get();
156 $leadFieldNames = $leadFieldNames ? TypeRocketArr::pluck( $leadFieldNames->toArray(), 'name' ) : [];
157 return array_unique( $leadFieldNames );
158 }
159 }
160