Advertisement
Guest User

adrean

a guest
Nov 16th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.91 KB | None | 0 0
  1. <?php
  2.  
  3. namespace MedAppBundle\Command;
  4.  
  5. use Application\Sonata\MediaBundle\Entity\Media;
  6. use MedAppBundle\Entity\Group;
  7. use MedAppBundle\Entity\MedicSettings;
  8. use MedAppBundle\Entity\User;
  9. use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
  10. use Symfony\Component\Console\Helper\Table;
  11. use Symfony\Component\Console\Input\InputArgument;
  12. use Symfony\Component\Console\Input\InputInterface;
  13. use Symfony\Component\Console\Input\InputOption;
  14. use Symfony\Component\Console\Output\OutputInterface;
  15. use Symfony\Component\Filesystem\Filesystem;
  16. use MedAppBundle\Entity\PendingProfileImage;
  17.  
  18. class GenMedicsCommand extends ContainerAwareCommand
  19. {
  20.  
  21. function generateRandomString($length = 4) {
  22. $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  23. $charactersLength = strlen($characters);
  24. $randomString = '';
  25. for ($i = 0; $i < $length; $i++) {
  26. $randomString .= $characters[rand(0, $charactersLength - 1)];
  27. }
  28. return $randomString;
  29. }
  30.  
  31. /**
  32. * {@inheritdoc}
  33. */
  34. protected function configure()
  35. {
  36. $this
  37. ->setName('medapp:generate:medics')
  38. ->setDescription('Generate medics group, users, group-users, medic settings')
  39. ->addArgument(
  40. 'number',
  41. InputArgument::REQUIRED,
  42. 'How many medics to generate?'
  43. );
  44. }
  45.  
  46. /**
  47. * {@inheritdoc}
  48. */
  49. protected function execute(InputInterface $input, OutputInterface $output)
  50. {
  51. $number = $input->getArgument('number');
  52. $this->generate($number, $output);
  53.  
  54. }
  55.  
  56.  
  57. //generate random medics for the win
  58. public function generate($nr, OutputInterface $output)
  59. {
  60.  
  61.  
  62. $em = $this->getContainer()->get('doctrine.orm.entity_manager');
  63. $doctrine = $this->getContainer()->get('doctrine');
  64.  
  65. $url = "http://api.randomuser.me/?results=" . $nr."&nat=ca,gb,us";
  66. $str = file_get_contents($url);
  67. $medics = json_decode($str,true);
  68. // $medics = ($str);
  69. $medicsgruop = $doctrine->getRepository('MedAppBundle:Group')->findOneBy(array('name' => Group::MEDICS_GROUP));
  70.  
  71. if (!$medicsgruop) {
  72. $medicsgruop = new Group();
  73. $medicsgruop->setName(Group::MEDICS_GROUP);
  74. $medicsgruop->addRole('ROLE_MEDIC');
  75. $em->persist($medicsgruop);
  76. $em->flush();
  77. $output->writeln('Medics group not found. Was generated!');
  78. }
  79.  
  80. $batchSize = 15;
  81. foreach ($medics["results"] as $i => $medic) {
  82. // set_time_limit(2);
  83.  
  84. $randkey = array_rand($this->fields);
  85. $field = $this->fields[$randkey];
  86.  
  87. $fname = $medic["name"]["first"];
  88. $lname = $medic["name"]["last"];
  89.  
  90. ///99men
  91. if ($medic["gender"] == 'male') {
  92. $image = '/images/uploads/profile_pictures/male/' . ($i % 100) . '.jpg';
  93. $gender = 'm';
  94. //96women
  95. } else {
  96. $image = '/images/uploads/profile_pictures/female/' . ($i % 97) . '.jpg';
  97. $gender = 'f';
  98. }
  99.  
  100. $email = $medic["email"];
  101. $phone = $medic["phone"];
  102.  
  103. $dob = new \DateTime();
  104. $tempDate = date_create_from_format('Y-m-d H:i:s', $medic['dob'])->getTimeStamp();
  105. $dob->setTimestamp($tempDate);
  106.  
  107. $reg = new \DateTime();
  108. $tempDate = date_create_from_format('Y-m-d H:i:s', $medic['registered'])->getTimeStamp();
  109. $reg->setTimestamp($tempDate);
  110.  
  111. $user = new User();
  112. //user
  113. $natKey = array_rand($this->nationalities);
  114. $location = $this->nationalities[$natKey];
  115. $randomString = $this->generateRandomString();
  116.  
  117. $user->setUsername($fname . $lname. $randomString);
  118. $user->setFirstname($fname);
  119. $user->setLastname($lname);
  120. $user->setLocationData($location);
  121. $user->setEmail($this->generateRandomString().$email);
  122. $user->setPhoneno($phone);
  123. $user->setSiteLang('en');
  124. $user->setChosentheme('blackTheme2');
  125. $user->setRegistrationDate($reg);
  126. $user->setEnabled(true);
  127.  
  128. //$pp= new Media();
  129. $media = new Media();
  130. $media->setBinaryContent(getcwd().'/web'.$image);
  131. $media->setContext('profile_pics');
  132. $media->setProviderName('sonata.media.provider.image');
  133. $this->getContainer()->get('sonata.media.manager.media')->save($media);
  134.  
  135. $user->setProfilepic($media);
  136. $user->setPlainPassword($fname . $lname);
  137. //group
  138.  
  139. $user->addGroup($medicsgruop);
  140.  
  141. $em->persist($user);
  142.  
  143. //Pending profile image
  144. $pendingProfileImage = new PendingProfileImage();
  145. $pendingProfileImage->setUser($user);
  146. $pendingProfileImage->setImage($media);
  147. $pendingProfileImage->setStatus('approved');
  148. $pendingProfileImage->setCreatedAt(new \DateTime());
  149.  
  150. $em->persist($pendingProfileImage);
  151.  
  152.  
  153. //MEDIC SETTINGS
  154.  
  155. $medsett = new MedicSettings();
  156. $medsett->setField($field);
  157. $medsett->setProfile($this->profile);
  158. $medsett->setGender($gender);
  159. $medsett->setDob($dob);
  160. $medsett->setMedic($user);
  161. $em->persist($medsett);
  162.  
  163. $user->setMedicinfo($medsett);
  164.  
  165. $output->write(array($i + 1, ' | ', 'Username:',$fname.$lname.$randomString, ' | ', 'Password:', $fname.$lname, ' | ', $field, ' | ', $email, ' | ', $image));
  166. $output->writeln('');
  167. if (($i % $batchSize) == 0) {
  168. $em->flush();
  169. // $em->clear();
  170. }
  171. }
  172. $em->flush();
  173. $em->clear();
  174.  
  175.  
  176. $output->writeln('done');
  177. }
  178.  
  179. protected $profile = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam ullamcorper laoreet enim maximus suscipit. Sed convallis eleifend nisl, ac imperdiet leo facilisis mattis. Integer lacus nulla, tincidunt ut aliquet nec, volutpat in risus. Aliquam dolor risus, venenatis nec orci ut, porta rutrum lacus. Suspendisse arcu justo, malesuada in ipsum in, placerat fringilla purus. Donec feugiat nunc eget nisl vulputate finibus. Nulla commodo orci leo, vel sagittis ex tempor at. Etiam dui libero, ornare eget condimentum non, efficitur ac augue. Maecenas vitae ultricies dolor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer vitae elit at risus feugiat pulvinar. Vestibulum ut neque vel magna viverra porttitor et sed nulla. Donec quis felis elit. Praesent lacinia faucibus lectus, in dictum eros aliquam consequat.Etiam semper blandit risus, et tempus mauris tempor at. Cras placerat purus tellus, id iaculis tortor dictum mollis. Donec quis iaculis neque. Morbi dapibus rhoncus mi, nec pellentesque lacus sodales id. Integer vel tincidunt sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent nulla felis, pulvinar id orci a, semper cursus purus. Morbi ac ultrices ipsum, ut auctor risus. Cras non commodo nibh. Cras dapibus augue eu maximus mattis. Praesent tristique dui ac leo porta vulputate. Ut eros ante, mattis a suscipit sed, molestie id metus. Integer sagittis justo quis diam fermentum, nec vestibulum ligula commodo. Nulla rutrum iaculis interdum. Pellentesque ac lobortis nunc, pellentesque porta dolor.";
  180. protected $PMtitle = 'A fascinating title';
  181. protected $PMmessage = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam ullamcorper laoreet enim maximus suscipit. Sed convallis eleifend nisl, ac imperdiet leo facilisis mattis. Integer lacus nulla, tincidunt ut aliquet nec, volutpat in risus. Aliquam dolor risus, venenatis nec orci ut, porta rutrum lacus. Suspendisse arcu justo, malesuada in ipsum in, placerat fringilla purus. Donec feugiat nunc eget nisl vulputate finibus. Nulla commodo orci leo, vel sagittis ex tempor at. Etiam dui libero, ornare eget condimentum non, efficitur ac augue. Maecenas vitae ultricies dolor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer vitae elit at risus feugiat pulvinar. Vestibulum ut neque vel magna viverra porttitor et sed nulla. Donec quis felis elit. Praesent lacinia faucibus lectus, in dictum eros aliquam consequat.Etiam semper blandit risus, et tempus mauris tempor at. Cras placerat purus tellus, id iaculis tortor dictum mollis. Donec quis iaculis neque. Morbi dapibus rhoncus mi, nec pellentesque lacus sodales id. Integer vel tincidunt sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent nulla felis, pulvinar id orci a, semper cursus purus. Morbi ac ultrices ipsum, ut auctor risus. Cras non commodo nibh. Cras dapibus augue eu maximus mattis. Praesent tristique dui ac leo porta vulputate. Ut eros ante, mattis a suscipit sed, molestie id metus. Integer sagittis justo quis diam fermentum, nec vestibulum ligula commodo. Nulla rutrum iaculis interdum. Pellentesque ac lobortis nunc, pellentesque porta dolor.";
  182. protected $fields = array(
  183. 'Abdominal Radiology Radiology-Diagnostic',
  184. 'Addiction Psychiatry Psychiatry',
  185. 'Adolescent Medicine Pediatrics',
  186. 'Adult Reconstructive Orthopaedics Orthopaedic Surgery',
  187. 'Advanced Heart Failure & Transplant Cardiology Internal Medicine',
  188. 'Allergy & Immunology',
  189. 'Anesthesiology',
  190. 'Biochemical Genetics Medical Genetics',
  191. 'Blood Banking - Transfusion Medicine Pathology-Anatomic & Clinical',
  192. 'Cardiothoracic Radiology Radiology-Diagnostic',
  193. 'Cardiovascular Disease Internal Medicine',
  194. 'Chemical Pathology Pathology-Anatomic & Clinical',
  195. 'Child & Adolescent Psychiatry Psychiatry',
  196. 'Child Neurology Neurology',
  197. 'Clinical & Laboratory Immunology Allergy & Immunology',
  198. 'Clinical Cardiac Electrophysiology Internal Medicine',
  199. 'Clinical Neurophysiology Neurology',
  200. 'Colon & Rectal Surgery',
  201. 'Congenital Cardiac Surgery Thoracic Surgery',
  202. 'Craniofacial Surgery Plastic Surgery',
  203. 'Critical Care Medicine Anesthesiology',
  204. 'Critical Care Medicine Internal Medicine',
  205. 'Cytopathology Pathology-Anatomic & Clinical',
  206. 'Dermatology',
  207. 'Dermatopathology Dermatology',
  208. 'Emergency Medicine',
  209. 'Endocrinology, Diabetes & Metabolism Internal Medicine',
  210. 'Endovascular Surgical Neuroradiology Neurological Surgery',
  211. 'Endovascular Surgical Neuroradiology Neurology',
  212. 'Endovascular Surgical Neuroradiology Radiology-Diagnostic',
  213. 'Family Medicine',
  214. 'Family Practice',
  215. 'Female Pelvic Medicine & Reconstructive Surgery Obstetrics & Gynecology',
  216. 'Foot & Ankle Orthopaedics Orthopaedic Surgery',
  217. 'Forensic Pathology Pathology-Anatomic & Clinical',
  218. 'Forensic Psychiatry Psychiatry',
  219. 'Gastroenterology Internal Medicine',
  220. 'Geriatric Medicine Family Medicine',
  221. 'Geriatric Medicine Internal Medicine',
  222. 'Geriatric Medicine Family Practice',
  223. 'Geriatric Psychiatry Psychiatry',
  224. 'Hand Surgery Orthopaedic Surgery',
  225. 'Hand Surgery Plastic Surgery',
  226. 'Hand Surgery Surgery-General',
  227. 'Hematology Internal Medicine',
  228. 'Hematology Pathology-Anatomic & Clinical',
  229. 'Hematology & Oncology Internal Medicine',
  230. 'Infectious Disease Internal Medicine',
  231. 'Internal Medicine',
  232. 'Internal Medicine-Pediatrics',
  233. 'Interventional Cardiology Internal Medicine',
  234. 'Medical Genetics',
  235. 'Medical Microbiology Pathology-Anatomic & Clinical',
  236. 'Medical Toxicology Emergency Medicine',
  237. 'Medical Toxicology Preventive Medicine',
  238. 'Molecular Genetic Pathology Medical Genetics',
  239. 'Muscoskeletal Radiology Radiology-Diagnostic',
  240. 'Musculoskeletal Oncology Orthopaedic Surgery',
  241. 'Neonatal-Perinatal Medicine Pediatrics',
  242. 'Nephrology Internal Medicine',
  243. 'Neurological Surgery',
  244. 'Neurology',
  245. 'Neuromuscular Medicine Neurology',
  246. 'Neuromuscular Medicine Physical Medicine & Rehabilitation',
  247. 'Neuropathology Pathology-Anatomic & Clinical',
  248. 'Neuroradiology Radiology-Diagnostic',
  249. 'Nuclear Medicine',
  250. 'Nuclear Radiology Radiology-Diagnostic',
  251. 'Obstetric Anesthesiology Anesthesiology',
  252. 'Obstetrics & Gynecology',
  253. 'Oncology Internal Medicine',
  254. 'Ophthalmic Plastic & Reconstructive Surgery Ophthalmology',
  255. 'Ophthalmology',
  256. 'Orthopaedic Sports Medicine Orthopaedic Surgery',
  257. 'Orthopaedic Surgery',
  258. 'Orthopaedic Surgery of the Spine Orthopaedic Surgery',
  259. 'Orthopaedic Trauma Orthopaedic Surgery',
  260. 'Otolaryngology',
  261. 'Otology - Neurotology Otolaryngology',
  262. 'Pain Medicine Anesthesiology',
  263. 'Pain Medicine Neurology',
  264. 'Pain Medicine Physical Medicine & Rehabilitation',
  265. 'Pathology-Anatomic & Clinical',
  266. 'Pediatric Anesthesiology Anesthesiology',
  267. 'Pediatric Cardiology Pediatrics',
  268. 'Pediatric Critical Care Medicine Pediatrics',
  269. 'Pediatric Emergency Medicine Emergency Medicine',
  270. 'Pediatric Emergency Medicine Pediatrics',
  271. 'Pediatric Endocrinology Pediatrics',
  272. 'Pediatric Gastroenterology Pediatrics',
  273. 'Pediatric Hematology-Oncology Pediatrics',
  274. 'Pediatric Infectious Diseases Pediatrics',
  275. 'Pediatric Nephrology Pediatrics',
  276. 'Pediatric Orthopaedics Orthopaedic Surgery',
  277. 'Pediatric Otolaryngology Otolaryngology',
  278. 'Pediatric Pathology Pathology-Anatomic & Clinical',
  279. 'Pediatric Pulmonology Pediatrics',
  280. 'Pediatric Radiology Radiology-Diagnostic',
  281. 'Pediatric Rheumatology Pediatrics',
  282. 'Pediatric Sports Medicine Pediatrics',
  283. 'Pediatric Surgery Surgery-General',
  284. 'Pediatric Transplant Hepatology Pediatrics',
  285. 'Pediatric Urology Urology',
  286. 'Pediatrics',
  287. 'Physical Medicine & Rehabilitation',
  288. 'Plastic Surgery',
  289. 'Preventive Medicine',
  290. 'Procedural Dermatology Dermatology',
  291. 'Psychiatry',
  292. 'Pulmonary Disease Internal Medicine',
  293. 'Pulmonary Disease & Critical Care Medicine Internal Medicine',
  294. 'Radiation Oncology',
  295. 'Radiology-Diagnostic',
  296. 'Rheumatology Internal Medicine',
  297. 'Sleep Medicine',
  298. 'Spinal Cord Injury Medicine Physical Medicine & Rehabilitation',
  299. 'Sports Medicine Emergency Medicine',
  300. 'Sports Medicine Family Medicine',
  301. 'Sports Medicine Internal Medicine',
  302. 'Sports Medicine Physical Medicine & Rehabilitation',
  303. 'Surgery-General',
  304. 'Surgical Critical Care Surgery-General',
  305. 'Thoracic Surgery',
  306. 'Thoracic Surgery-Integrated Thoracic Surgery',
  307. 'Transplant Hepatology Internal Medicine',
  308. 'Urology',
  309. 'Vascular & Interventional Radiology Radiology-Diagnostic',
  310. 'Vascular Surgery Surgery-General',
  311. );
  312. protected $nationalities = array(
  313. '["US","United Stated","CA","California"]',
  314. '["GB","United Kingdom","GB-KIT","Kensington"]',
  315. '["DE","Germany","BY", "Bavaria"]',
  316. '["FR","France","FR-U","Provence"]',
  317. '["MX","Mexico","MX-MEX","Mexico"]',
  318. '["CA","Canada","CA-QC","Quebec"]',
  319. '["JP","Japan", "JP-26","Kyoto"]',
  320. '["AU","Australia","AU-MB","Melbourne"]',
  321. '["ES","Spain","ES-CA","Catalonia"]',
  322. '["BR","Brazil","BR-SO","Sao Paolo"]'
  323. );
  324.  
  325. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement