dreamjob/app/Controller/JobController.php

366 lines
16 KiB
PHP

<?php
App::uses('AppController', 'Controller');
class JobController extends AppController {
/**
* This controller use User Model
*
* @var array
*/
public $uses = array('DreamjobJobOpening','DreamjobJobFavority','DreamjobJobApplication','DreamjobPageText','DreamjobPageImage','DreamjobJobMsg','DreamjobCvEntry','DreamjobListCvCategory','DreamjobListBranch','DreamjobListCity');
/**
* Displays a view
*
* @param mixed What page to display
* @return void
* @throws NotFoundException When the view file could not be found
* or MissingViewException in debug mode.
*/
public function openingList() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
$self = $this->MiconwareSession->getCompany();
if(!is_array($self) or count($self) <= 0){
$this->set('error', 'dreamjob.error.noPermision');
$this->render('/Home/error');
}else{
if(!empty($this->request->query['del'])){
$o =$this->DreamjobJobOpening->findById($this->request->query['del']);
if($o['AppUser']['id']== $self['AppUser']['id']){
$this->DreamjobJobOpening->delete($this->request->query['del'],false);
$this->MiconwareSession->setFlash(__('dreamjob.opening.delete'),'flash',array('alert'=>'success'));
}else{
$this->MiconwareSession->setFlash(__('dreamjob.opening.delete.error'),'flash',array('alert'=>'danger'));
}
}
$openings = $this->DreamjobJobOpening->find('all',array('conditions' => array('DreamjobJobOpening.company_id' => $self['AppUser']['id'])));
$this->set('openings',$openings);
$this->render('/Job/opening_list');
}
}
public function openingAdd() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
$c = $this->MiconwareSession->getCompany();
if(!empty($c)){
if ($this->request->is('post')) {
$this->DreamjobJobOpening->create($this->request->data);
$this->DreamjobJobOpening->data['DreamjobJobOpening']['company_id'] = $c['AppUser']['id'];
if ($this->DreamjobJobOpening->save()) {
$this->MiconwareSession->setFlash(__('dreamjob.opening.save.add'),'flash',array('alert'=>'success'));
}else{
$this->MiconwareSession->setFlash(__('dreamjob.opening.save.error'),'flash',array('alert'=>'danger'));
}
}
$this->set('kindofjobs', $this->DreamjobJobOpening->DreamjobListKindofjob->find('list'));
$this->set('graducations', $this->DreamjobJobOpening->DreamjobListGraducation->find('list'));
$this->set('branches',$this->DreamjobListBranch->find('list'));
$this->set('cities',$this->DreamjobListCity->find('list'));
$this->render('/Job/opening_edit');
}else{
$this->set('error', 'dreamjob.error.noCompany');
$this->render('/Home/error');
}
}
public function openingEdit() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
$a = $this->MiconwareSession->getCompany();
if(empty($a)){
$this->set('error', 'dreamjob.error.noCompany');
$this->render('/Home/error');
return null;
}
if(!empty($this->request->params['id'])){
$load = $this->DreamjobJobOpening->findById($this->request->params['id']);
$cid = $a['AppUser']['id'];
if (!empty($load) and $load['DreamjobJobOpening']['company_id'] == $cid) {
if ($this->request->is(array('post', 'put'))) {
$this->DreamjobJobOpening->create($this->request->data);
$this->DreamjobJobOpening->data['DreamjobJobOpening']['id'] = $this->request->params['id'];
$this->DreamjobJobOpening->data['DreamjobJobOpening']['company_id'] = $cid;
if ($this->DreamjobJobOpening->save($this->DreamjobJobOpening->data)) {
$this->MiconwareSession->setFlash(__('dreamjob.opening.save'),'flash',array('alert'=>'success'));
}else
$this->MiconwareSession->setFlash(__('dreamjob.opening.save.error'),'flash',array('alert'=>'danger'));
}
}
$this->request->data=$load;
$this->set('kindofjobs', $this->DreamjobJobOpening->DreamjobListKindofjob->find('list'));
$this->set('graducations', $this->DreamjobJobOpening->DreamjobListGraducation->find('list'));
$this->set('branches',$this->DreamjobListBranch->find('list'));
$this->set('cities',$this->DreamjobListCity->find('list'));
}
if(empty($this->request->data['DreamjobJobOpening'])){
$this->set('error', 'dreamjob.error.opening.notFound');
$this->render('/Home/error');
}elseif( $this->request->data['DreamjobJobOpening']['company_id'] != $a['AppUser']['id']){
$this->set('error', 'dreamjob.error.noPermision');
$this->render('/Home/error');
}else{
$this->render('/Job/opening_edit');
}
}
public function openingGet() {
$this->MiconwareSession->init($this);
$opening = false;
if(!empty($this->request->params['id'])){
if(!empty($this->request->params['favorite']) and count($this->request->params['favorite'])>0){
$WORKER = $this->MiconwareSession->getWorker();
$fav=false;
foreach($WORKER['Favority'] as $val){
if($val['id'] == $this->request->params['id'])
$fav=true;
}
$data = array('DreamjobJobFavority' => array('opening_id' => $this->request->params['id'], 'worker_id' => $WORKER['AppUser']['id']),'modified' => false);
$data2 = array('DreamjobJobFavority.opening_id' => $this->request->params['id'], 'DreamjobJobFavority.worker_id' => $WORKER['AppUser']['id']);
if($fav){
$this->MiconwareSession->setFlash(__('dreamjob.opening.fav.delete'),'flash',array('alert'=>'success'));
$this->DreamjobJobFavority->deleteAll($data2,false);
}else{
$this->DreamjobJobFavority->create();
$this->DreamjobJobFavority->save($data);
$this->MiconwareSession->setFlash(__('dreamjob.opening.fav.add'),'flash',array('alert'=>'success'));
}
}
$con = $this->MiconwareSession->getOpeningCondition();
$con['DreamjobJobOpening.id'] = $this->request->params['id'];
$opening = $this->DreamjobJobOpening->find('first',array('conditions' => $con));
}
$this->MiconwareSession->refreshCache();
$this->MiconwareSession->initWeb($this);
if(!is_array($opening) or count($opening) <= 0 ){
$this->set('error', 'dreamjob.error.opening.notFound');
$this->render('/Home/error');
}else{
$this->set('opening',$opening);
$this->render('/Job/opening');
}
}
public function favorite() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
$self = $this->MiconwareSession->getWorker();
if(!is_array($self) or count($self) <= 0){
$this->set('error', 'dreamjob.error.noPermision');
$this->render('/Home/error');
}else{
$fav_id = array();
foreach($self['Favority'] as $fav)
$fav_id[]=$fav['id'];
$con = $this->MiconwareSession->getOpeningCondition();
$con['DreamjobJobOpening.id'] =$fav_id;
$openings = $this->DreamjobJobOpening->find('all',array('conditions' => $con));
$this->set('openings',$openings);
$this->set('opening_MINI',true);
$this->render('/Job/favorite');
}
}
public function applicationList() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
$self = $this->MiconwareSession->getWorker();
if(!is_array($self) or count($self) <= 0){
$this->set('error', 'dreamjob.error.noPermision');
$this->render('/Home/error');
}else{
$applications = $this->DreamjobJobApplication->find('all',array('conditions' => array('DreamjobJobApplication.worker_id' => $self['AppUser']['id'])));
$this->set('applications',$applications);
$this->set('opening_MINI',true);
$this->render('/Job/applicationWorker_list');
}
}
public function applicationGet() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
$WORKER = $this->MiconwareSession->getWorker();
$COMPANY = $self = $this->MiconwareSession->getCompany();
$application = null;
if(isset($this->request->params['id'])){
if(is_array($WORKER) and count($WORKER) > 0)
$application = $this->DreamjobJobApplication->find('first',array('conditions' => array('DreamjobJobApplication.worker_id' => $WORKER['AppUser']['id'],'DreamjobJobApplication.id'=> $this->request->params['id'] )));
if(is_array($COMPANY) and count($COMPANY) > 0)
$application = $this->DreamjobJobApplication->find('first',array('conditions' => array('DreamjobJobOpening.company_id' => $COMPANY['AppUser']['id'],'DreamjobJobApplication.id'=> $this->request->params['id'] )));
}
if(!is_array($application) or count($application) <= 0){
$this->set('error', 'dreamjob.error.noPermision');
$this->render('/Home/error');
}else{
$this->set('page',null);
$this->set("edit",false);
if(!empty($this->request->params['hiv'])){
$this->DreamjobJobApplication->id = $application['DreamjobJobApplication']['id'];
if ($this->DreamjobJobApplication->saveField('closed',!$application['DreamjobJobApplication']['closed'])) {
$application = $this->DreamjobJobApplication->find('first',array('conditions' => array('DreamjobJobApplication.id'=> $this->request->params['id'] )));
$this->MiconwareSession->setFlash(__('dreamjob.application.archiv'),'flash',array('alert'=>'success'));
}else{
$this->MiconwareSession->setFlash(__('dreamjob.application.archiv.error'),'flash',array('alert'=>'danger'));
}
}
if(!empty($this->request->params['ages'])){
$this->set('msg',true);
if ($this->request->is('post')) {
$this->DreamjobJobMsg->create($this->request->data);
$this->DreamjobJobMsg->data['DreamjobJobMsg']['saw'] = false;
$this->DreamjobJobMsg->data['DreamjobJobMsg']['application_id'] = $application['DreamjobJobApplication']['id'];
$this->DreamjobJobMsg->data['DreamjobJobMsg']['fromcompany'] = is_array($COMPANY) and count($COMPANY) > 0;
if($this->DreamjobJobMsg->sendMessage()) {
$application = $this->DreamjobJobApplication->find('first',array('conditions' => array('DreamjobJobApplication.id'=> $this->request->params['id'] )));
$this->MiconwareSession->setFlash(__('dreamjob.application.msg.add'),'flash',array('alert'=>'success'));
}else{
$this->MiconwareSession->setFlash(__('dreamjob.application.msg.error'),'flash',array('alert'=>'danger'));
}
}
if(is_array($WORKER) and count($WORKER) > 0)
$this->DreamjobJobMsg->updateAll(array("saw"=>true),array("DreamjobJobMsg.fromcompany"=>true,"DreamjobJobMsg.application_id"=>$this->request->params['id']));
if(is_array($COMPANY) and count($COMPANY) > 0)
$this->DreamjobJobMsg->updateAll(array("saw"=>true),array("DreamjobJobMsg.fromcompany"=>false,"DreamjobJobMsg.application_id"=>$this->request->params['id']));
}else{
$this->set('msg',false);
// CV
if(!empty($this->request->params['vitea'])){
$cv = $this->DreamjobCvEntry->find('all',array('conditions' => array('worker_id'=> $application['DreamjobJobApplication']['worker_id'])));
$this->set("cv",$cv);
$cvp0 = $this->DreamjobListCvCategory->find('first',array('conditions' => array('DreamjobListCvCategory.position' => 0)));
$this->set('cvp0', $cvp0);
}else{
if(!empty($this->request->params['page'])){
/*$this->set('pageInh',$this->DreamjobJobApplication->Page->find('first',
array('conditions' => array("Page.id" => $this->request->params['page']))
));*/
$page = $this->DreamjobJobApplication->PageText->find('first',
array('conditions' => array("PageText.page_ptr_id" => $this->request->params['page']))
);
if(!is_array($page) or count($page)<= 0)
$page = $this->DreamjobJobApplication->PageImage->find('first',
array('conditions' => array("PageImage.page_ptr_id" => $this->request->params['page']))
);
$this->set('page',$page);
}
}
}
$this->set('application',$application);
$this->render('/Job/application');
}
}
public function applicationByOpening(){
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
$COMPANY = $self = $this->MiconwareSession->getCompany();
$applications = null;
$opening = null;
if(isset($this->request->params['id'])){
if(is_array($COMPANY) and count($COMPANY) > 0)
$opening = $this->DreamjobJobOpening->find('first',array('conditions' => array('DreamjobJobOpening.company_id' => $COMPANY['AppUser']['id'],'DreamjobJobOpening.id'=> $this->request->params['id'] )));
if(!empty($this->request->query['archiv']) and count($opening)>0){
$application = $this->DreamjobJobApplication->find('first',array('conditions' =>array('DreamjobJobApplication.id'=>$this->request->query['archiv'], 'DreamjobJobApplication.opening_id'=> $this->request->params['id'])));
$this->DreamjobJobApplication->id = $this->request->query['archiv'];
if ($this->DreamjobJobApplication->saveField('closed',!$application['DreamjobJobApplication']['closed'])) {
$application = $this->DreamjobJobApplication->find('first',array('conditions' => array('DreamjobJobApplication.id'=> $this->request->params['id'] )));
$this->MiconwareSession->setFlash(__('dreamjob.application.archiv'),'flash',array('alert'=>'success'));
}else{
$this->MiconwareSession->setFlash(__('dreamjob.application.archiv.error'),'flash',array('alert'=>'danger'));
}
}
$filter_current = false;
$filter_archiv = false;
$condition = array('DreamjobJobOpening.company_id' => $COMPANY['AppUser']['id'],'DreamjobJobApplication.opening_id'=> $this->request->params['id']);
if(isset($this->request->query['filter']) and $this->request->query['filter'] =='all'){
}elseif(isset($this->request->query['filter']) and $this->request->query['filter'] =='archiv'){
$condition['closed'] = true;
$filter_archiv = true;
}else{
$condition['closed'] = false;
$filter_current = true;
}
$applications = $this->DreamjobJobApplication->find('all',array('conditions' =>$condition));
$this->set("filter_archiv",$filter_archiv);
$this->set("filter_current",$filter_current);
}
if(!is_array($opening) or count($opening) <= 0){
$this->set('error', 'dreamjob.error.noPermision');
$this->render('/Home/error');
}else{
$this->set('opening',$opening);
$this->set('applications',$applications);
$this->render('/Job/applicationCompany_list');
}
}
public function applicationSend() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
$w = $this->MiconwareSession->getWorker();
if(!empty($w)){
$opening = null;
if(!empty($this->request->params['id'])){
$con = $this->MiconwareSession->getOpeningCondition();
$con['DreamjobJobOpening.id'] = $this->request->params['id'];
$opening = $this->DreamjobJobOpening->find('first',array('conditions' => $con));
}
if(!is_array($opening) or count($opening) <= 0 ){
$this->set('error', 'dreamjob.error.opening.notFound');
$this->render('/Home/error');
}else{
if ($this->request->is('post')){
if($this->request->data['DreamjobJobApplication']['agb']) {
unset($this->request->data['DreamjobJobApplication']['agb']);
$this->request->data['DreamjobJobApplication']['worker_id'] = $w['AppUser']['id'];
$this->request->data['DreamjobJobApplication']['opening_id'] = $this->request->params['id'];
$pages = $this->request->data['DreamjobJobApplicationPage']['page_id'];
unset($this->request->data['DreamjobJobApplicationPage']['page_id']);
foreach($pages as $id)
$this->request->data['DreamjobJobApplicationPage'][]=array('page_id'=> $id);
$result = $this->DreamjobJobApplication->sendApplication($this->request->data);
if ($result) {
$this->MiconwareSession->setFlash(__('dreamjob.application.send'),'flash',array('alert'=>'success'));
}else{
$this->MiconwareSession->setFlash(__('dreamjob.application.send.error'),'flash',array('alert'=>'danger'));
}
}else{
$this->MiconwareSession->setFlash(__('dreamjob.agb.error.notAccept'),'flash',array('alert'=>'danger'));
}
}
$this->set('pages', $w['DreamjobPageInh']);
$this->set('opening', $opening);
$this->render('/Job/application_send');
}
}else{
$this->set('error', 'dreamjob.error.noWorker');
$this->render('/Home/error');
}
}
}
?>