text changes to registration mail content
[namibia] / module / Stock / src / Stock / Utility / ImportUtility.php
1 <?php
2 namespace Stock\Utility;
3
4 use \Doctrine\ORM\EntityManager;
5 use Utility\Debug;
6
7 class ImportUtility
8 {
9
10         /**
11          * @var \Doctrine\ORM\EntityManager
12          */
13         protected $em;
14
15
16         /**
17          * @param \Doctrine\ORM\EntityManager $em
18          */
19         public function __construct(EntityManager $em)
20         {
21                 $this->em = $em;
22         }
23
24         /**
25          * Retrieve database table entry id from search parameters.
26          * @param string $entityName
27          * @param array  $search
28          * @return mixed
29          */
30         public function getId($entityName, $search)
31         {
32                 $item = $this->em
33                         ->getRepository($entityName)
34                         ->findOneBy($search);
35                 return !is_null($item)
36                         ? $item->id
37                         : false;
38         }
39
40         /**
41          * Retrieve database table entry from search parameters.
42          * @param string $entityName
43          * @param array  $search
44          * @return mixed
45          */
46         public function getEntry($entityName, $search)
47         {
48                 $item = $this->em
49                         ->getRepository($entityName)
50                         ->findOneBy($search);
51                 return !is_null($item)
52                         ? $item
53                         : false;
54         }
55
56         /**
57          * Create database table entry.
58          * @param string $entityName
59          * @param array  $data
60          * @return mixed
61          */
62         public function createEntry($entityName, array $data)
63         {
64                 $item = new $entityName();
65                 //if($item instanceof \Stock\Entity\Make) {Debug::errorLog("entity", 'stock\entity\make');}
66                 $item->fromArray($data);
67                 $this->em->persist($item);
68                 $this->em->flush();
69                 return $item->id;
70         }
71
72         /**
73          * Update database table entry.
74          * @param string  $entityName
75          * @param integer $id
76          * @param array   $data
77          */
78         public function updateEntry($entityName, $id, array $data)
79         {
80                 $this->em
81                         ->getRepository($entityName)
82                         ->find($id)
83                         ->fromArray($data);
84                 $this->em->flush();
85         }
86
87         /**
88          * Establish new synchronization version to use.
89          * @param  string $tableName
90          * @return integer
91          */
92         public function getLatestSynchVersion($tableName)
93         {
94                 $versions = $this->em->createQuery(
95                         "SELECT MAX(versionedTable.createVersion) AS createVersion,"
96                         . " MAX(versionedTable.updateVersion) AS updateVersion "
97                         . "FROM $tableName versionedTable"
98                 )
99                         ->getScalarResult();
100                 return $versions[0]['createVersion'] > $versions[0]['updateVersion']
101                         ? (int)$versions[0]['createVersion']
102                         : (int)$versions[0]['updateVersion'];
103         }
104
105 }