public function testCanBeModified() { $project = new \stdClass(); $user = new \stdClass(); $user->id = 1; $user->user_type = User::USER_TYPE_CLIENT; $project->pro_status = Project::PROJECT_STATUS_DRAFT; $project->user_id = 1; //$this->assertTrue($project); $this->assertTrue(Project::canBeModified($project, $user)); $project->pro_status = Project::PROJECT_STATUS_ACTIVE; $this->assertFalse(Project::canBeModified($project, $user)); $project->pro_status = Project::PROJECT_STATUS_ADJUDICATED; $this->assertFalse(Project::canBeModified($project, $user)); $project->pro_status = Project::PROJECT_STATUS_CANCELLED; $this->assertFalse(Project::canBeModified($project, $user)); $project->pro_status = Project::PROJECT_STATUS_CLOSED_CLIENT; $this->assertFalse(Project::canBeModified($project, $user)); $project->pro_status = Project::PROJECT_STATUS_CLOSED_FOTOTEA; $this->assertFalse(Project::canBeModified($project, $user)); $project->pro_status = Project::PROJECT_STATUS_CLOSED_PHOTOGRAPHER; $this->assertFalse(Project::canBeModified($project, $user)); $project->user_id = 2; $this->assertFalse(Project::canBeModified($project, $user)); }
public static function adjudicateProject($projectId, $offerId) { $userFields = array(User::PROFILE_DIRECTION, User::PROFILE_MOVIL, User::PROFILE_CITY); //Load proyect and offer $project = Project::loadById($projectId); $projectOwner = User::getUserInfo($project->user_id, $userFields); if (Project::canBeAdjudicated($project)) { $offer = Offer::getOffer($offerId); $winner = User::getUserInfo($offer->user_id, $userFields); //Set project as adjudicated $data = array('pro_status' => Project::PROJECT_STATUS_ADJUDICATED, 'pro_date_end' => date('Y-m-d H:i:s', time())); Project::updateProject($project->pro_id, $data); //Set offer as winner $data = array('awarded' => Offer::STATUS_AWARDED); Offer::updateOffer($offer->id, $data); //Send notificacions and emails self::notifyWinner($project, $projectOwner, $winner); // Send email to winner self::emailWinner($offer, $winner, $project, $projectOwner); // Send email to project owner self::emailProjectOwner($offer, $winner, $project, $projectOwner); // Notifiy other photographers about denied offers. Losers :D self::notifyLosers($project); //Track event in analytics // Event = Proyectos adjudicados $eventData = new \stdClass(); $eventData->user_id = $projectOwner['id']; $eventData->photograph_id = $winner['id']; $eventData->project_name = $project->pro_tit; $events = FAnalytics::getInstance(); $events->trackEvent('Proyecto', 'Proyectos adjudicados', json_encode($eventData)); } else { //TODO Oh oh... strong notification here about this fail return false; } return true; }
$data['pro_environment'] = $app->getRequest()->post('pro_environment'); $data['pro_moment'] = $app->getRequest()->post('pro_moment'); $proDeadline = str_replace('/', '-', $app->getRequest()->post('pro_deadline')); if (!empty($proDeadline)) { $projectDeadline = date('Y-m-d H:i:s', strtotime($proDeadline)); } $data['pro_deadline'] = $projectDeadline; if ($error) { $app->addError("La información suministrada para la creación del proyecto es inválida."); $app->getInput()->save(); //flash form data $app->redirect($app->getHelper('UrlHelper')->getUrl('agregarProyecto?id=' . $proId)); return; } // END - Server side validations $result = Project::updateProject($proId, $data); if (!$result) { $app->addError("La información suministrada para la creación del proyecto es inválida."); $app->getInput()->save(); //flash form data $app->redirect($app->getHelper('UrlHelper')->getUrl('agregarProyecto?id=' . $proId)); return; } //Success $projectUrl = $app->getHelper('UrlHelper')->getProjectUrl($proId); $app->addMessage('Tu proyecto se ha guardo con éxito. <a href="{0}">Ir al proyecto</a>', $projectUrl); $app->redirect($app->getHelper('UrlHelper')->getUrl("perfil")); return; } //oferta if ($act == "oferta") {
/* Mientras esto se mueve a donde debe estar */ $app->shutdown(); die; //$error = "La combinación de Correo y Contraseña son incorrectos."; //$actError = '$("#formError").slideDown("slow"); //$actError = '$("#formError").css("display", "")'; } else { // TODO: SACAR ESTA LOGICA DE AQUI JUNTO CON EL REFACTOR DE LOGIN if ($app->getRequest()->cookie('guest_project')) { // TODO: CAMBIAR ESTE QUERY CUANDO SE CAMBIE EL LOGIN, AHORA ES NECESARIO PORQ EN ESTE PUNTO LA COOKIE AUN NO EXISTE (MISMO REQUERT QUE CUANDO SE CREA Y NO SIRVE getCurrentUser()) $currentUser = User::getUserByEmail($user_user); if ($currentUser->user_type == User::USER_TYPE_CLIENT) { $tmpProjectId = $app->getRequest()->cookie('guest_project'); $tmpProject = TmpProject::getTmpProjectByTmpId($tmpProjectId); if ($tmpProject) { $project = Project::createProjectFromTmp($tmpProject, $currentUser->id); TmpProject::assignTmpProjectToUser($tmpProject->pro_id, $currentUser->id); // Event: Proyectos subidos $eventData = new stdClass(); $eventData->user_id = $currentUser->id; $eventData->project_id = $project->id(); $eventData->project_name = $project->get('pro_tit'); $events = FAnalytics::getInstance(); $events->trackEvent('Proyecto', 'Proyectos subidos', json_encode($eventData)); } // Delete cookie $app->getResponse()->removeCookie('guest_project'); } } $app->redirect($app->getHelper('UrlHelper')->getUrl($login)); }
" <?php echo $app->getInput()->old('pro_moment', $project->pro_moment) == Project::PROJECT_MOMENT_DAY ? 'checked' : ''; ?> ><?php echo Project::getMomentsName(Project::PROJECT_MOMENT_DAY); ?> <input id="pro_moment" name="pro_moment" type="radio" value="<?php echo Project::PROJECT_MOMENT_NIGHT; ?> " <?php echo $app->getInput()->old('pro_moment', $project->pro_moment) == Project::PROJECT_MOMENT_NIGHT ? 'checked' : ''; ?> ><?php echo Project::getMomentsName(Project::PROJECT_MOMENT_NIGHT); ?> </div> </div> </div> <div class="row"> <div class="form-group col-xs-12"> <label for="pro_deadline" class="control-label">Deadline de la entrega</label> <input type="text" placeholder="dd/mm/yyyy" name="pro_deadline" value="<?php echo $app->getInput()->old('pro_deadline', $project->pro_deadline); ?> " id="pro_deadline" class="form-control date-field"> </div> </div>
<?php } ?> <?php if ($rs_proj->pro_status == Project::PROJECT_STATUS_DRAFT) { ?> <a class="btn btn-primary" href="agregarProyecto?id=<?php echo $rs_proj->pro_id; ?> ">Editar proyecto</a> <?php } ?> <?php if (Project::canBeQualified($rs_proj, $currentUser)) { ?> <a class="btn btn-primary" href="<?php echo UrlHelper::getUrl("proyectoFinalizar?id=" . $rs_proj->pro_id); ?> ">Calificar proyecto</a> <?php } ?> </div> </div> <?php } ?> <?php } else {
<div class="col-xs-2 ofertas-summary"> <div class="alert alert-success alert-ofertas"> Ofertas: <?php echo $rs_pro->total_ofertas; ?> </div> <?php if ($current_user->user_type == User::USER_TYPE_PHOTOGRAPHER && $ofertas == "N" && $rs_pro->pro_status == Project::PROJECT_STATUS_ACTIVE) { ?> <a class="btn btn-primary offer-form-trigger" href="#formOferta" id="oferta_ppal">Ofertar</a> <?php } else { ?> <div class="alert alert-project-status"> Proyecto <?php echo Project::getStatusName($rs_pro->pro_status); ?> </div> <?php } ?> <?php if ($rs_pro->pro_status == Project::PROJECT_STATUS_ACTIVE) { ?> <div class="text-center time-left"> Quedan <?php echo $diasRestN[2] . "d " . $diasRestN[3] . "h"; ?> </div> <?php