public function ajaxEditGlobalAwardAction() { $globalAward = $this->getDoctrine()->getRepository('HelperBundle:GlobalAward')->find($this->request->get('globalAwardId', 0)); if (!$globalAward) { throw $this->createNotFoundException('Invalid global award'); } $propertyType = $this->get('services.institution_property')->getAvailablePropertyType(InstitutionPropertyType::TYPE_GLOBAL_AWARD); $imcProperty = $this->imcService->getPropertyValue($this->institutionMedicalCenter, $propertyType, $globalAward->getId(), $this->request->get('propertyId', 0)); $imcProperty->setValueObject($globalAward); $editGlobalAwardForm = $this->createForm(new InstitutionGlobalAwardFormType(), $imcProperty); if ($this->request->isMethod('POST')) { $editGlobalAwardForm->bind($this->request); if ($editGlobalAwardForm->isValid()) { $imcProperty = $editGlobalAwardForm->getData(); $em = $this->getDoctrine()->getEntityManager(); $em->persist($imcProperty); $em->flush(); // Invalidate InstitutionMedicalCenterProfile memcache $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionMedicalCenterProfileKey($this->institutionMedicalCenter->getId())); $output = array('status' => true, 'extraValue' => $imcProperty->getExtraValue()); $response = new Response(\json_encode($output), 200, array('content-type' => 'application/json')); } else { $response = new Response('Form error', 400); } } return $response; }
public function uploadFeaturedImageAction() { $data = array('status' => false); if ($this->getRequest()->files->get('featuredImage')) { $file = $this->getRequest()->files->get('featuredImage'); $media = $this->get('services.institution.media')->uploadFeaturedImage($file, $this->institution); if ($media->getName()) { $imageSize = ImageSizes::LARGE_BANNER; if ($this->getRequest()->get('logoSize') == ImageSizes::SMALL) { $imageSize = ImageSizes::SMALL; } $src = $this->get('services.institution')->mediaTwigExtension->getInstitutionMediaSrc($media->getName(), $imageSize); $data['mediaSrc'] = $src; // Invalidate InstitutionProfile memcache $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionProfileKey($this->institution->getId())); // Check if institution is paying client if ($this->institution->getPayingClient()) { // Invalidate all InstitutionMedicalCenterProfile memcache foreach ($this->institution->getInstitutionMedicalCenters() as $each) { $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionMedicalCenterProfileKey($each->getId())); } } } $data['status'] = true; } return new Response(\json_encode($data), 200, array('content-type' => 'application/json')); }
public function profileAction(Request $request) { $start = \microtime(true); $this->apiInstitutionMedicalCenterService = $this->get('services.api.institutionMedicalCenter'); $slug = $request->get('imcSlug', null); $institutionMedicalCenterId = $this->getDoctrine()->getRepository('InstitutionBundle:InstitutionMedicalCenter')->getInstitutionMedicalCenterIdBySlug($slug); if (!$institutionMedicalCenterId) { throw $this->createNotFoundException('Invalid clinic.'); } $memcacheKey = FrontendMemcacheKeysHelper::generateInsitutionMedicalCenterProfileKey($institutionMedicalCenterId); $memcacheService = $this->get('services.memcache'); $cachedData = $memcacheService->get($memcacheKey); if (!$cachedData) { $this->institutionMedicalCenter = $this->apiInstitutionMedicalCenterService->getInstitutionMedicalCenterPublicDataById($institutionMedicalCenterId); if (!$this->institutionMedicalCenter) { throw $this->createNotFoundException('Invalid medical center'); } $this->institution = $this->institutionMedicalCenter['institution']; if ($this->get('services.api.institution')->isSingleCenterInstitutionType($this->institution)) { // redirect to hospital page } // build optional data, according to paying client rules $this->apiInstitutionMedicalCenterService->buildBusinessHours($this->institutionMedicalCenter)->buildDoctors($this->institutionMedicalCenter)->buildGlobalAwards($this->institutionMedicalCenter)->buildOfferedServices($this->institutionMedicalCenter)->buildInstitutionSpecializations($this->institutionMedicalCenter)->buildLogoSource($this->institutionMedicalCenter, ImageSizes::MEDIUM)->buildFeaturedMediaSource($this->institutionMedicalCenter)->buildMediaGallery($this->institutionMedicalCenter)->buildContactDetails($this->institutionMedicalCenter)->buildExternalSites($this->institutionMedicalCenter); $specializationsList = $this->apiInstitutionMedicalCenterService->listActiveSpecializations($this->institutionMedicalCenter); $this->institutionMedicalCenter['specializationsList'] = $specializationsList; // cache this processed data $memcacheService->set($memcacheKey, $this->institutionMedicalCenter); } else { $this->institutionMedicalCenter = $cachedData; $this->institution = $this->institutionMedicalCenter['institution']; $specializationsList = $this->institutionMedicalCenter['specializationsList']; } $params = array('awards' => $this->institutionMedicalCenter['globalAwards'], 'services' => $this->institutionMedicalCenter['offeredServices'], 'institutionMedicalCenter' => $this->institutionMedicalCenter, 'institution' => $this->institution, 'form' => $this->createForm(new InstitutionInquiryFormType(), new InstitutionInquiry())->createView(), 'formId' => 'imc_inquiry_form'); // set request variables to be used by page meta components $this->getRequest()->attributes->add(array('institutionMedicalCenter' => $this->institutionMedicalCenter, 'pageMetaContext' => PageMetaConfiguration::PAGE_TYPE_INSTITUTION_MEDICAL_CENTER, 'pageMetaVariables' => array(PageMetaConfigurationService::SPECIALIZATIONS_COUNT_VARIABLE => \count($specializationsList), PageMetaConfigurationService::SPECIALIZATIONS_LIST_VARIABLE => \implode(', ', \array_slice($specializationsList, 0, 10, true))))); $content = $this->render('FrontendBundle:InstitutionMedicalCenter:profile.html.twig', $params); //$end = \microtime(true); $diff = $end-$start; echo "{$diff}s"; exit; return $this->setResponseHeaders($content); }
/** * Remove institution specialization * * @param Request $request */ public function ajaxRemoveSpecializationAction(Request $request) { $institutionSpecialization = $this->getDoctrine()->getRepository('InstitutionBundle:InstitutionSpecialization')->find($request->get('isId', 0)); if (!$institutionSpecialization) { throw $this->createNotFoundException('Invalid instituiton specialization'); } if ($institutionSpecialization->getInstitutionMedicalCenter()->getId() != $this->institutionMedicalCenter->getId()) { return new Response("Cannot remove specialization that does not belong to this institution", 401); } $form = $this->createForm(new CommonDeleteFormType(), $institutionSpecialization); if ($request->isMethod('POST')) { $form->bind($request); if ($form->isValid()) { $_id = $institutionSpecialization->getId(); $em = $this->getDoctrine()->getEntityManager(); $em->remove($institutionSpecialization); $em->flush(); // Invalidate InstitutionMedicalCenterProfile memcache $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionMedicalCenterProfileKey($this->institutionMedicalCenter->getId())); // Invalidate InstitutionProfile memcache $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionProfileKey($this->institutionMedicalCenter->getInstitution()->getId())); $responseContent = array('id' => $_id); $response = new Response(\json_encode($responseContent), 200, array('content-type' => 'application/json')); } else { $response = new Response("Invalid form", 400); } } return $response; }
public function deleteAction(Request $request) { $em = $this->getDoctrine()->getEntityManagerForClass('MediaBundle:Media'); $media = $em->getRepository('MediaBundle:Media')->find($request->get('mediaId')); $stringCenterIds = $request->get('institutionMedicalCenterIds', ''); $em->remove($media); $em->flush(); // Invalidate InstitutionProfile memcache $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionProfileKey($this->institution->getId())); // Invalidate InstitutionMedicalCenterProfile memcache if any if ($stringCenterIds) { $centerIds = explode(',', $stringCenterIds); foreach ($centerIds as $centerId) { $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionMedicalCenterProfileKey($centerId)); } } $result['status'] = true; $result['message'] = 'Photo has been deleted!'; return new Response(json_encode($result), 200, array('Content-Type' => 'application/json')); }
/** * Synchronized Institution Data to Clinic Data * @param Institution $institution */ private function syncInstitutionDataToClinicData(Institution $institution) { $center = $this->get('services.institution')->getFirstMedicalCenter($institution); $center->setName($institution->getName()); $center->setDescription($institution->getDescription()); $center->setAddress($institution->getAddress1()); $center->setContactEmail($institution->getContactEmail()); $center->setWebsites($institution->getWebsites()); $center->setDateUpdated($institution->getDateModified()); $this->get('services.institution_medical_center')->save($center); // Invalidate InstitutionMedicalCenterProfile memcache $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionMedicalCenterProfileKey($center->getId())); }
public function editStatusAction(Request $request) { $template = 'AdminBundle:Institution/Modals:edit.institutionStatus.html.twig'; $output = array(); if ($request->isMethod('POST')) { $formVariables = $request->get(InstitutionProfileFormType::NAME); $removedFields = \array_diff(InstitutionProfileFormType::getFieldNames(), array_keys($formVariables)); $form = $this->createForm(new InstitutionProfileFormType(), $this->institution, array(InstitutionProfileFormType::OPTION_BUBBLE_ALL_ERRORS => false, InstitutionProfileFormType::OPTION_REMOVED_FIELDS => $removedFields)); $formRequestData = $request->get($form->getName()); $form->bind($formRequestData); if ($form->isValid()) { $this->institution = $form->getData(); $this->get('services.institution.factory')->save($this->institution); // dispatch UPDATE_STATUS institution event $this->get('event_dispatcher')->dispatch(InstitutionBundleEvents::ON_UPDATE_STATUS_INSTITUTION, new GenericEvent($this->institution)); $response = new Response(\json_encode(array('html' => '<strong>Success!</strong> Updated status for ' . $this->institution->getName() . '.', 'status' => $this->institution->getStatus())), 200, array('content-type' => 'application/json')); // Invalidate Institution Profile cache $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionProfileKey($this->institution->getId())); // Invalidate All InstitutionMedicalCenterProfile cache $centers = $this->institution->getInstitutionMedicalCenters(); foreach ($centers as $each) { $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionMedicalCenterProfileKey($each->getId())); } } else { $response = new Response(\json_encode(array('error' => 'Please fill up the form propery')), 400, array('content-type' => 'application/json')); } } else { $form = $this->createForm(new InstitutionProfileFormType(), $this->institution); $output['html'] = $this->renderView($template, array('institution' => $this->institution, 'institutionStatusForm' => $form->createView())); $response = new Response(\json_encode($output), 200, array('content-type' => 'application/json')); } return $response; }
/** * Upload logo for Institution Medical Center * @param Request $request */ public function uploadAction(Request $request) { if ($request->files->get('logo')) { $file = $request->files->get('logo'); $media = $this->get('services.institution.media')->medicalCenterUploadLogo($file, $this->institutionMedicalCenter); if ($media->getName()) { $src = $this->get('services.institution')->mediaTwigExtension->getInstitutionMediaSrc($media->getName(), ImageSizes::MEDIUM); $data['mediaSrc'] = $src; } $data['status'] = true; // Invalidate InstitutionMedicalCenterProfile memcache $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionMedicalCenterProfileKey($this->institutionMedicalCenter->getId())); // Invalidate InstitutionProfile memcache $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionProfileKey($this->institutionMedicalCenter->getInstitution()->getId())); } return new Response(\json_encode($data), 200, array('content-type' => 'application/json')); }
public function ajaxAddInstitutionMedicalCenterGlobalAwardAction(Request $request) { $award = $this->getDoctrine()->getRepository('HelperBundle:GlobalAward')->find($request->get('id')); if (!$award) { throw $this->createNotFoundException(); } $propertyService = $this->get('services.institution_medical_center_property'); $propertyType = $propertyService->getAvailablePropertyType(InstitutionPropertyType::TYPE_GLOBAL_AWARD); // check if this medical center already have this property if ($this->get('services.institution_medical_center')->hasPropertyValue($this->institutionMedicalCenter, $propertyType, $award->getId())) { $response = new Response("Award {$award->getId()} already exists.", 500); } else { $property = $propertyService->createInstitutionMedicalCenterPropertyByName($propertyType->getName(), $this->institution, $this->institutionMedicalCenter); $property->setValue($award->getId()); try { $em = $this->getDoctrine()->getEntityManager(); $em->persist($property); $em->flush(); // Invalidate InstitutionMedicalCenter Profile cache $this->get('services.memcache')->delete(FrontendMemcacheKeysHelper::generateInsitutionMedicalCenterProfileKey($request->get('imcId'))); $html = $this->renderView('AdminBundle:InstitutionMedicalCenterProperties/Partials:row.globalAward.html.twig', array('award' => $award, 'property' => $property, 'institution' => $this->institution, 'institutionMedicalCenter' => $this->institutionMedicalCenter, 'commonDeleteForm' => $this->createForm(new CommonDeleteFormType())->createView())); $response = new Response(\json_encode(array('html' => $html)), 200, array('content-type' => 'application/json')); } catch (\Exception $e) { $response = new Response($e->getMessage(), 500); } } return $response; }