PageRenderTime 50ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/app/protected/modules/reports/data/ReportsDemoDataMaker.php

https://bitbucket.org/ddonthula/zurmofeb
PHP | 341 lines | 263 code | 46 blank | 32 comment | 0 complexity | f511c5c42755ccb914273f33f5409ba3 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, BSD-2-Clause, GPL-3.0, BSD-3-Clause, LGPL-3.0
  1. <?php
  2. /*********************************************************************************
  3. * Zurmo is a customer relationship management program developed by
  4. * Zurmo, Inc. Copyright (C) 2012 Zurmo Inc.
  5. *
  6. * Zurmo is free software; you can redistribute it and/or modify it under
  7. * the terms of the GNU General Public License version 3 as published by the
  8. * Free Software Foundation with the addition of the following permission added
  9. * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
  10. * IN WHICH THE COPYRIGHT IS OWNED BY ZURMO, ZURMO DISCLAIMS THE WARRANTY
  11. * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
  12. *
  13. * Zurmo is distributed in the hope that it will be useful, but WITHOUT
  14. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  15. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  16. * details.
  17. *
  18. * You should have received a copy of the GNU General Public License along with
  19. * this program; if not, see http://www.gnu.org/licenses or write to the Free
  20. * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  21. * 02110-1301 USA.
  22. *
  23. * You can contact Zurmo, Inc. with a mailing address at 113 McHenry Road Suite 207,
  24. * Buffalo Grove, IL 60089, USA. or at email address contact@zurmo.com.
  25. ********************************************************************************/
  26. /**
  27. * Class that builds demo accounts.
  28. */
  29. class ReportsDemoDataMaker extends DemoDataMaker
  30. {
  31. protected $ratioToLoad = 1;
  32. public static function getDependencies()
  33. {
  34. return array('contacts');
  35. }
  36. public function makeAll(& $demoDataHelper)
  37. {
  38. assert('$demoDataHelper instanceof DemoDataHelper');
  39. static::makeNewLeadsReport();
  40. static::makeActiveCustomerEmailList();
  41. static::makeClosedWonOpportunitiesByOwner();
  42. static::makeClosedWonOpportunitiesByMonth();
  43. static::makeOpportunitiesByStage();
  44. }
  45. public static function makeNewLeadsReport()
  46. {
  47. $leadStateIdsAndNames = LeadsUtil::getLeadStateDataFromStartingStateOnAndKeyedById();
  48. $report = new Report();
  49. $report->setDescription ('A report showing new leads');
  50. $report->setModuleClassName('ContactsModule');
  51. $report->setName ('New Leads Report');
  52. $report->setType (Report::TYPE_ROWS_AND_COLUMNS);
  53. $report->setOwner (Yii::app()->user->userModel);
  54. $report->setFiltersStructure('1 AND 2');
  55. $report->setCurrencyConversionType(Report::CURRENCY_CONVERSION_TYPE_BASE);
  56. $filter = new FilterForReportForm('ContactsModule', 'Contact', $report->getType());
  57. $filter->attributeIndexOrDerivedType = 'createdDateTime';
  58. $filter->valueType = MixedDateTypesSearchFormAttributeMappingRules::TYPE_LAST_7_DAYS;
  59. $filter->availableAtRunTime = true;
  60. $report->addFilter($filter);
  61. $filter = new FilterForReportForm('ContactsModule', 'Contact', $report->getType());
  62. $filter->attributeIndexOrDerivedType = 'state';
  63. $filter->value = array_keys($leadStateIdsAndNames);
  64. $filter->operator = OperatorRules::TYPE_ONE_OF;
  65. $report->addFilter($filter);
  66. $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType());
  67. $displayAttribute->attributeIndexOrDerivedType = 'FullName';
  68. $report->addDisplayAttribute($displayAttribute);
  69. $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType());
  70. $displayAttribute->attributeIndexOrDerivedType = 'source';
  71. $report->addDisplayAttribute($displayAttribute);
  72. $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType());
  73. $displayAttribute->attributeIndexOrDerivedType = 'officePhone';
  74. $report->addDisplayAttribute($displayAttribute);
  75. $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType());
  76. $displayAttribute->attributeIndexOrDerivedType = 'primaryEmail___emailAddress';
  77. $report->addDisplayAttribute($displayAttribute);
  78. $savedReport = new SavedReport();
  79. SavedReportToReportAdapter::resolveReportToSavedReport($report, $savedReport);
  80. //set explicit
  81. $saved = $savedReport->save();
  82. assert('$saved');
  83. $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::
  84. makeBySecurableItem($savedReport);
  85. $explicitReadWriteModelPermissions->addReadWritePermitable(Group::getByName(Group::EVERYONE_GROUP_NAME));
  86. $success = ExplicitReadWriteModelPermissionsUtil::
  87. resolveExplicitReadWriteModelPermissions($savedReport, $explicitReadWriteModelPermissions);
  88. assert('$success');
  89. $saved = $savedReport->save();
  90. assert('$saved');
  91. }
  92. public static function makeActiveCustomerEmailList()
  93. {
  94. $contactStateIdsAndNames = ContactsUtil::getContactStateDataFromStartingStateOnAndKeyedById();
  95. $report = new Report();
  96. $report->setDescription ('A report showing active customers who have not opted out of receiving emails');
  97. $report->setModuleClassName('ContactsModule');
  98. $report->setName ('Active Customer Email List');
  99. $report->setType (Report::TYPE_ROWS_AND_COLUMNS);
  100. $report->setOwner (Yii::app()->user->userModel);
  101. $report->setFiltersStructure('1 AND 2 AND 3');
  102. $report->setCurrencyConversionType(Report::CURRENCY_CONVERSION_TYPE_BASE);
  103. $filter = new FilterForReportForm('ContactsModule', 'Contact', $report->getType());
  104. $filter->attributeIndexOrDerivedType = 'account___type';
  105. $filter->value = 'Customer';
  106. $filter->operator = OperatorRules::TYPE_EQUALS;
  107. $report->addFilter($filter);
  108. $filter = new FilterForReportForm('ContactsModule', 'Contact', $report->getType());
  109. $filter->attributeIndexOrDerivedType = 'state';
  110. $filter->value = array_keys($contactStateIdsAndNames);
  111. $filter->operator = OperatorRules::TYPE_ONE_OF;
  112. $report->addFilter($filter);
  113. $filter = new FilterForReportForm('ContactsModule', 'Contact', $report->getType());
  114. $filter->attributeIndexOrDerivedType = 'primaryEmail___optOut';
  115. $filter->value = true;
  116. $filter->operator = OperatorRules::TYPE_DOES_NOT_EQUAL;
  117. $report->addFilter($filter);
  118. $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType());
  119. $displayAttribute->attributeIndexOrDerivedType = 'FullName';
  120. $report->addDisplayAttribute($displayAttribute);
  121. $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType());
  122. $displayAttribute->attributeIndexOrDerivedType = 'account___name';
  123. $displayAttribute->label = 'Account Name';
  124. $report->addDisplayAttribute($displayAttribute);
  125. $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType());
  126. $displayAttribute->attributeIndexOrDerivedType = 'primaryEmail___emailAddress';
  127. $report->addDisplayAttribute($displayAttribute);
  128. $savedReport = new SavedReport();
  129. SavedReportToReportAdapter::resolveReportToSavedReport($report, $savedReport);
  130. //set explicit
  131. $saved = $savedReport->save();
  132. assert('$saved');
  133. $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::
  134. makeBySecurableItem($savedReport);
  135. $explicitReadWriteModelPermissions->addReadWritePermitable(Group::getByName(Group::EVERYONE_GROUP_NAME));
  136. $success = ExplicitReadWriteModelPermissionsUtil::
  137. resolveExplicitReadWriteModelPermissions($savedReport, $explicitReadWriteModelPermissions);
  138. assert('$success');
  139. $saved = $savedReport->save();
  140. assert('$saved');
  141. }
  142. public static function makeClosedWonOpportunitiesByOwner()
  143. {
  144. $report = new Report();
  145. $report->setDescription ('A report showing closed won opportunties by owner');
  146. $report->setModuleClassName('OpportunitiesModule');
  147. $report->setName ('Opportunities By Owner');
  148. $report->setType (Report::TYPE_SUMMATION);
  149. $report->setOwner (Yii::app()->user->userModel);
  150. $report->setFiltersStructure('1');
  151. $report->setCurrencyConversionType(Report::CURRENCY_CONVERSION_TYPE_BASE);
  152. $filter = new FilterForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  153. $filter->attributeIndexOrDerivedType = 'stage';
  154. $filter->value = 'Closed Won';
  155. $filter->operator = OperatorRules::TYPE_EQUALS;
  156. $report->addFilter($filter);
  157. $groupBy = new GroupByForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  158. $groupBy->attributeIndexOrDerivedType = 'owner__User';
  159. $groupBy->axis = 'x';
  160. $report->addGroupBy($groupBy);
  161. $displayAttribute = new DisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  162. $displayAttribute->attributeIndexOrDerivedType = 'owner__User';
  163. $report->addDisplayAttribute($displayAttribute);
  164. $displayAttribute = new DisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  165. $displayAttribute->attributeIndexOrDerivedType = 'Count';
  166. $report->addDisplayAttribute($displayAttribute);
  167. $displayAttribute = new DisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  168. $displayAttribute->attributeIndexOrDerivedType = 'amount__Summation';
  169. $report->addDisplayAttribute($displayAttribute);
  170. $drillDownDisplayAttribute = new DrillDownDisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity',
  171. $report->getType());
  172. $drillDownDisplayAttribute->attributeIndexOrDerivedType = 'name';
  173. $report->addDrillDownDisplayAttribute($drillDownDisplayAttribute);
  174. $drillDownDisplayAttribute = new DrillDownDisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity',
  175. $report->getType());
  176. $drillDownDisplayAttribute->attributeIndexOrDerivedType = 'account___name';
  177. $drillDownDisplayAttribute->label = 'Account Name';
  178. $report->addDrillDownDisplayAttribute($drillDownDisplayAttribute);
  179. $drillDownDisplayAttribute = new DrillDownDisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity',
  180. $report->getType());
  181. $drillDownDisplayAttribute->attributeIndexOrDerivedType = 'amount';
  182. $report->addDrillDownDisplayAttribute($drillDownDisplayAttribute);
  183. $drillDownDisplayAttribute = new DrillDownDisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity',
  184. $report->getType());
  185. $drillDownDisplayAttribute->attributeIndexOrDerivedType = 'closeDate';
  186. $report->addDrillDownDisplayAttribute($drillDownDisplayAttribute);
  187. $chart = new ChartForReportForm();
  188. $chart->type = 'Pie2D';
  189. $chart->firstSeries = 'owner__User';
  190. $chart->firstRange = 'amount__Summation';
  191. $report->setChart($chart);
  192. $savedReport = new SavedReport();
  193. SavedReportToReportAdapter::resolveReportToSavedReport($report, $savedReport);
  194. //set explicit
  195. $saved = $savedReport->save();
  196. assert('$saved');
  197. $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::
  198. makeBySecurableItem($savedReport);
  199. $explicitReadWriteModelPermissions->addReadWritePermitable(Group::getByName(Group::EVERYONE_GROUP_NAME));
  200. $success = ExplicitReadWriteModelPermissionsUtil::
  201. resolveExplicitReadWriteModelPermissions($savedReport, $explicitReadWriteModelPermissions);
  202. assert('$success');
  203. $saved = $savedReport->save();
  204. assert('$saved');
  205. }
  206. public static function makeClosedWonOpportunitiesByMonth()
  207. {
  208. $report = new Report();
  209. $report->setDescription ('A report showing closed won opportunties bymonth');
  210. $report->setModuleClassName('OpportunitiesModule');
  211. $report->setName ('Closed won opportunities by month');
  212. $report->setType (Report::TYPE_SUMMATION);
  213. $report->setOwner (Yii::app()->user->userModel);
  214. $report->setFiltersStructure('1');
  215. $report->setCurrencyConversionType(Report::CURRENCY_CONVERSION_TYPE_BASE);
  216. $filter = new FilterForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  217. $filter->attributeIndexOrDerivedType = 'stage';
  218. $filter->value = 'Closed Won';
  219. $filter->operator = OperatorRules::TYPE_EQUALS;
  220. $report->addFilter($filter);
  221. $groupBy = new GroupByForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  222. $groupBy->attributeIndexOrDerivedType = 'closeDate__Month';
  223. $groupBy->axis = 'x';
  224. $report->addGroupBy($groupBy);
  225. $displayAttribute = new DisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  226. $displayAttribute->attributeIndexOrDerivedType = 'closeDate__Month';
  227. $report->addDisplayAttribute($displayAttribute);
  228. $displayAttribute = new DisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  229. $displayAttribute->attributeIndexOrDerivedType = 'Count';
  230. $report->addDisplayAttribute($displayAttribute);
  231. $displayAttribute = new DisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  232. $displayAttribute->attributeIndexOrDerivedType = 'amount__Summation';
  233. $report->addDisplayAttribute($displayAttribute);
  234. $chart = new ChartForReportForm();
  235. $chart->type = 'Bar2D';
  236. $chart->firstSeries = 'closeDate__Month';
  237. $chart->firstRange = 'amount__Summation';
  238. $report->setChart($chart);
  239. $savedReport = new SavedReport();
  240. SavedReportToReportAdapter::resolveReportToSavedReport($report, $savedReport);
  241. //set explicit
  242. $saved = $savedReport->save();
  243. assert('$saved');
  244. $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::
  245. makeBySecurableItem($savedReport);
  246. $explicitReadWriteModelPermissions->addReadWritePermitable(Group::getByName(Group::EVERYONE_GROUP_NAME));
  247. $success = ExplicitReadWriteModelPermissionsUtil::
  248. resolveExplicitReadWriteModelPermissions($savedReport, $explicitReadWriteModelPermissions);
  249. assert('$success');
  250. $saved = $savedReport->save();
  251. assert('$saved');
  252. }
  253. public static function makeOpportunitiesByStage()
  254. {
  255. $report = new Report();
  256. $report->setModuleClassName('OpportunitiesModule');
  257. $report->setName ('Opportunities by Stage');
  258. $report->setType (Report::TYPE_SUMMATION);
  259. $report->setOwner (Yii::app()->user->userModel);
  260. $report->setFiltersStructure('');
  261. $report->setCurrencyConversionType(Report::CURRENCY_CONVERSION_TYPE_BASE);
  262. $groupBy = new GroupByForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  263. $groupBy->attributeIndexOrDerivedType = 'stage';
  264. $groupBy->axis = 'x';
  265. $report->addGroupBy($groupBy);
  266. $displayAttribute = new DisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  267. $displayAttribute->attributeIndexOrDerivedType = 'stage';
  268. $report->addDisplayAttribute($displayAttribute);
  269. $displayAttribute = new DisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  270. $displayAttribute->attributeIndexOrDerivedType = 'Count';
  271. $report->addDisplayAttribute($displayAttribute);
  272. $displayAttribute = new DisplayAttributeForReportForm('OpportunitiesModule', 'Opportunity', $report->getType());
  273. $displayAttribute->attributeIndexOrDerivedType = 'amount__Summation';
  274. $report->addDisplayAttribute($displayAttribute);
  275. $chart = new ChartForReportForm();
  276. $chart->type = 'Column2D';
  277. $chart->firstSeries = 'stage';
  278. $chart->firstRange = 'amount__Summation';
  279. $report->setChart($chart);
  280. $savedReport = new SavedReport();
  281. SavedReportToReportAdapter::resolveReportToSavedReport($report, $savedReport);
  282. //set explicit
  283. $saved = $savedReport->save();
  284. assert('$saved');
  285. $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::
  286. makeBySecurableItem($savedReport);
  287. $explicitReadWriteModelPermissions->addReadWritePermitable(Group::getByName(Group::EVERYONE_GROUP_NAME));
  288. $success = ExplicitReadWriteModelPermissionsUtil::
  289. resolveExplicitReadWriteModelPermissions($savedReport, $explicitReadWriteModelPermissions);
  290. assert('$success');
  291. $saved = $savedReport->save();
  292. assert('$saved');
  293. }
  294. }
  295. ?>