/**
  * [add description]
  */
 public function add()
 {
     //Validations
     $this->form_validation->set_rules('leadsource', 'Lead Source', 'greater_than[0]', array('greater_than' => 'You must select a valid lead source.'));
     $this->form_validation->set_rules('title', 'Estimation title', 'trim|required');
     $this->form_validation->set_rules('description', 'Description', 'trim|required');
     $this->form_validation->set_rules('assignTo[]', 'Assignee', 'trim|required');
     $this->form_validation->set_rules('scheduledOn', 'Estimation Schedule', 'trim|required');
     $lead_source = $this->user_model->getMasterTerms(array('leadsource'));
     $view['leadsource'] = array(0 => '- SELECT -') + $lead_source['leadsource'];
     if (!$this->form_validation->run()) {
         $data['content'] = $this->load->view('admin/add_estimations', $view, TRUE);
     } else {
         //Save Values
         $estimation = new Entity\Estimations();
         $estimation->setTitle($this->input->post('title'));
         $estimation->setDescription($this->input->post('description'));
         $scheduledDate = date_create(date('Y-m-d H:i:s', strtotime($this->input->post('scheduledOn'))));
         $date = date_create(date('Y-m-d H:i:s'));
         $actingUser = $this->doctrine->em->getReference('Entity\\Users', $this->auth_user_id);
         $leadsource = $this->doctrine->em->getReference('Entity\\Terms', $this->input->post('leadsource'));
         $estimation->setSchduledOn($scheduledDate);
         $estimation->setAssignedBy($actingUser);
         $estimation->setMarketplace($leadsource);
         $estimation->setCreatedOn($date);
         $estimation->setUpdatedOn($date);
         $this->doctrine->em->persist($estimation);
         $assignto = $this->input->post('assignTo');
         foreach ($assignto as $assign) {
             $assignTo = $this->doctrine->em->getReference('Entity\\Users', $assign);
             //Save Estimation users
             $assign_estimation = new Entity\EstimationsUsers();
             $assign_estimation->setStatus('pending');
             $assign_estimation->setAssignedTo($assignTo);
             $assign_estimation->setEstimation($estimation);
             $this->doctrine->em->persist($assign_estimation);
         }
         $this->doctrine->em->flush();
         //Update file reference
         $files = preg_split('/\\,/', $this->input->post('fileIds'), -1, PREG_SPLIT_NO_EMPTY);
         foreach ($files as $file) {
             $fileEntity = $this->doctrine->em->getReference('Entity\\Files', $file);
             $fileEntity->setEntityId($estimation->getId());
             $this->doctrine->em->persist($fileEntity);
         }
         $this->doctrine->em->flush();
         $this->session->set_flashdata('success', 'Estimation has been successfully assigned.');
         redirect('admin/bdms/estimations');
     }
     $data['title'] = 'Assign Estimation';
     return $this->load->view('html', $data);
 }
Beispiel #2
0
 /**
  * [add description]
  */
 public function add()
 {
     $em = $this->doctrine->em;
     $masterCategory = $this->user_model->getMasterCategories();
     $view['options'] = $this->user_model->getMasterTerms(array_keys($masterCategory));
     //Validation
     $this->form_validation->set_rules('title', 'Project name', 'trim|required');
     $this->form_validation->set_rules('orderValue', 'Order Value', 'trim|required');
     $this->form_validation->set_rules('advanceAmount', 'Advance Amount', 'trim|required|decimal');
     $this->form_validation->set_rules('projectType', 'Type', 'trim|required|is_natural', array('is_natural' => 'Project type field is required'));
     $this->form_validation->set_rules('projectTech[]', 'Technologies', 'trim|required|is_natural', array('is_natural' => 'Technologies field is required'));
     $this->form_validation->set_rules('projectStage', 'Stage', 'trim|required|is_natural', array('is_natural' => 'Project stage field is required'));
     $this->form_validation->set_rules('projectCodebase', 'Codebase', 'trim|required|is_natural', array('is_natural' => 'Codebase field is required'));
     $this->form_validation->set_rules('projectCurrency', 'Codebase', 'trim|required|is_natural', array('is_natural' => 'Currency field is required'));
     if ($this->input->post('selfestimated')) {
         $view['show_estimation_block'] = $selfestimation = true;
         $view['estimation_rows'] = count($this->input->post('department[]'));
         $this->form_validation->set_rules('leadsource', 'Leadsource', 'trim|required|is_natural', array('is_natural' => 'You must select leadsource field'));
         $this->form_validation->set_rules('department[]', 'Tasks', 'trim|required', array('required' => 'All the tasks fields are required'));
         $this->form_validation->set_rules('effort[]', 'Effort', 'trim|required|is_natural', array('required' => 'All effort fields required'));
     } else {
         $view['show_estimation_block'] = $selfestimation = false;
         $this->form_validation->set_rules('EstimationRefernce', 'Estimation reference', 'trim|required|is_natural', array('is_natural' => 'You must select an estimation refernce'));
     }
     if ($projectTechs = $this->input->post('projectTech[]')) {
         $view['show_label'] = true;
         foreach ($projectTechs as $projectTech) {
             $view['show_' . $projectTech] = true;
             $this->form_validation->set_rules("distribution[{$projectTech}]", 'Domain distribution', 'trim|required|is_natural');
         }
     } else {
         $view['show_label'] = false;
     }
     if ($this->input->post('existingclient')) {
         $view['show_existing'] = $existingclient = true;
         $this->form_validation->set_rules('clientId', 'Existing client', 'trim|required|is_natural', array('is_natural' => 'You must select an existing client'));
     } else {
         $view['show_existing'] = false;
         $this->form_validation->set_rules('clientName', 'Client name', 'trim|required');
         $this->form_validation->set_rules('clientEmail', 'Client Email', 'trim|required|valid_email');
         $this->form_validation->set_rules('clientPhone', 'Client Phone', 'trim|required|min_length[8]|max_length[10]');
     }
     if (!$this->form_validation->run()) {
         $data['content'] = $this->load->view('admin/add_dois', $view, TRUE);
     } else {
         //Save values
         $date = date_create(date('Y-m-d H:i:s'));
         $actingUser = $this->doctrine->em->getReference('Entity\\Users', $this->auth_user_id);
         //Estimation
         if (!$selfestimation) {
             $estimation = new Entity\Estimations();
             $estimation->setTitle($this->input->post('title'));
             $estimation->setDescription('SELF ESTIMATION');
             $leadsource = $this->doctrine->em->getReference('Entity\\Terms', $this->input->post('leadsource'));
             $estimation->setSchduledOn($date);
             $estimation->setAssignedBy($actingUser);
             $estimation->setMarketplace($leadsource);
             $estimation->setCreatedOn($date);
             $estimation->setUpdatedOn($date);
             $this->doctrine->em->persist($estimation);
             //Save Estimation Users
             $assign_estimation = new Entity\EstimationsUsers();
             $assign_estimation->setStatus('completed');
             $assign_estimation->setAssignedTo($actingUser);
             $assign_estimation->setEstimation($estimation);
             $assign_estimation->setData();
             $assign_estimation->setStartedOn($date);
             $assign_estimation->setCompletedOn($date);
             $this->doctrine->em->persist($assign_estimation);
         } else {
             $estimation = $em->getReference('Entity\\Estimations', $this->input->post('EstimationRefernce'));
         }
         //Clients
         if (!$existingclient) {
             $client = new Entity\Clients();
             $client->setName($this->input->post('clientName'));
             $client->setEmail($this->input->post('clientEmail'));
             $client->setContact($this->input->post('clientPhone'));
             $client->setIm($this->input->post('clientIm'));
             $client->setAddress($this->input->post('address'));
             $client->setTimezone($this->input->post('clientTimezone'));
             $client->setCreatedOn($date);
             $client->setUpdatedOn($date);
             $client->setCreatedBy($actingUser);
             $this->doctrine->em->persist($client);
         } else {
             $client = $em->getReference('Entity\\Clients', $this->input->post('clientId'));
         }
         //Projects
         $project = new Entity\Projects();
         $project->setName($this->input->post('title'));
         $project->setTimeline($this->input->post('title'));
         $project->setValue($this->input->post('title'));
         $project->setCreatedOn($date);
         $project->setUpdatedOn($date);
         $project->setClient($client);
         $project->setType();
         $project->setCurrency();
         $project->setStage();
         $project->setCodebase();
         $project->setCreatedBy($actingUser);
         $this->doctrine->em->persist($project);
         //Project Distribution
         $projectDist = new Entity\ProjectDistribution();
         //Project payments
         $projectPayment = new Entity\ProjectPayment();
         //Project Risks
         $projectRisk = new Entity\ProjectRisks();
         //DOI
         $doi = new Entity\Dois();
         $doi->setSelf();
         $doi->setStatus();
         $doi->setCreatedOn();
         $doi->setUpdatedOn();
         $doi->setCreatedBy();
         $doi->setSource();
         $doi->setEstimation();
         $doi->setProject();
         $this->doctrine->em->persist($doi);
         //Send Email
         redirect('admin/bdms/doi');
     }
     $data['title'] = 'Create DOI';
     return $this->load->view('html', $data);
 }