Created
March 27, 2015 14:31
-
-
Save patrickmaciel/f22a6f08226298f59611 to your computer and use it in GitHub Desktop.
phpfmt file error
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use App\Services\Validators\Admin\MailingValidator; | |
class MailingsController extends \BaseController | |
{ | |
/** | |
* Display a listing of the resource. | |
* GET /mailings | |
* | |
* @author Patrick Maciel <[email protected]> | |
* @versoin 1.0 | |
* @since 3.0 (CRS - Seleção) | |
* @return Response | |
*/ | |
public function index() | |
{ | |
$mailings = \Mailing::with('requisicao')->paginate(20); | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => false, | |
'mailings' => $mailings->toArray(), | |
'titulo' => 'Mailings', | |
200 | |
]); | |
} | |
return \View::make('mailings.index') | |
->with('mailings', $mailings) | |
->with('titulo', 'Mailings'); | |
} | |
/** | |
* Show the form for creating a new resource. | |
* GET /mailings/create | |
* | |
* @author Patrick Maciel <[email protected]> | |
* @versoin 1.0 | |
* @since 3.0 (CRS - Seleção) | |
* @return Response | |
*/ | |
public function create() | |
{ | |
$requisicoes = Requisicao::ativo()->lists('nome', 'id'); | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => false, | |
'form' => true, | |
'requisicoes' => $requisicoes, | |
'titulo' => 'Novo Mailing', | |
200 | |
]); | |
} | |
return \View::make('mailings.create', compact('requisicoes')) | |
->with('titulo', 'Novo Mailing'); | |
} | |
/** | |
* Store a newly created resource in storage. | |
* POST /mailings | |
* | |
* @author Patrick Maciel <[email protected]> | |
* @versoin 1.0 | |
* @since 3.0 (CRS - Seleção) | |
* @return Response | |
*/ | |
public function store() | |
{ | |
$validator = new MailingValidator; | |
if ($validator->passes()) { | |
$mailing = new \Mailing(); | |
$mailing->requisicao_id = \Input::get('requisicao_id'); | |
$mailing->nome = \Input::get('nome'); | |
$mailing->descricao = \Input::get('descricao'); | |
$mailing->ativo = \Input::get('ativo'); | |
$mailing->login_sso = \Input::get('login_sso'); | |
$mailing->data_inicio = \Input::get('data_inicio'); | |
$mailing->data_fim = \Input::get('data_fim'); | |
$mailing->sincronizado = \Input::get('sincronizado'); | |
$mailing->concluido = \Input::get('concluido'); | |
$mailing->contatos = \Input::get('contatos'); | |
$mailing->sincronizados = \Input::get('sincronizados'); | |
$mailing->rejeitados = \Input::get('rejeitados'); | |
$mailing->contactados = \Input::get('contactados'); | |
if ($mailing->save()) { | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => false, | |
'flash' => ['success', 'Mailing salvo com sucesso'], | |
200 | |
]); | |
} | |
\Session::flash('success', 'Mailing salvo com sucesso!'); | |
return \Redirect::route('mailings.index'); | |
} | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => true, | |
'inputs' => Input::all(), | |
'flash' => ['error', 'Ocorreu um erro ao salvar este Mailing. Tente novamente.'], | |
200 | |
]); | |
} | |
\Session::flash('error', 'Ocorreu um erro ao salvar este Mailing. Tente novamente.'); | |
return \Redirect::back() | |
->withInput(); | |
} | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => true, | |
'inputs' => Input::all(), | |
'validation' => $validator->errors, | |
200 | |
]); | |
} | |
return \Redirect::back() | |
->withInput() | |
->withErrors($validator->errors); | |
} | |
/** | |
* Display the specified resource. | |
* GET /mailings/{id} | |
* | |
* @param | |
* @author Patrick Maciel <[email protected]> | |
* @versoin 1.0 | |
* @since 3.0 (CRS - Seleção)int $id | |
* @return Response | |
*/ | |
public function show($id) | |
{ | |
$mailing = \Mailing::with('requisicao') | |
->findOrFail($id); | |
$contatos = \Contato::getContatosByMailing($mailing->id); | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => false, | |
'mailing' => $mailing, | |
'contatos' => $contatos, | |
'titulo' => $mailing->nome, | |
200 | |
]); | |
} | |
return \View::make('mailings.show', compact('mailing', 'contatos')); | |
} | |
/** | |
* Show the form for editing the specified resource. | |
* GET /mailings/{id}/edit | |
* | |
* @param | |
* @author Patrick Maciel <[email protected]> | |
* @versoin 1.0 | |
* @since 3.0 (CRS - Seleção)int $id | |
* @return Response | |
*/ | |
public function edit($id) | |
{ | |
$mailing = \Mailing::with('requisicao') | |
->findOrFail($id); | |
$requisicoes = Requisicao::ativo()->lists('nome', 'id'); | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => false, | |
'requisicoes' => $requisicoes, | |
'mailing' => $mailing, | |
'titulo' => 'Editar Mailing', | |
200 | |
]); | |
} | |
return \View::make('mailings.edit', compact('mailing', 'requisicoes')) | |
->with('titulo', 'Editar Mailing'); | |
} | |
/** | |
* Update the specified resource in storage. | |
* PUT /mailings/{id} | |
* | |
* @param | |
* @author Patrick Maciel <[email protected]> | |
* @versoin 1.0 | |
* @since 3.0 (CRS - Seleção)int $id | |
* @return Response | |
*/ | |
public function update($id) | |
{ | |
$validator = new MailingValidator(); | |
if ($validator->passes()) { | |
$mailing = \Mailing::findOrFail($id); | |
$mailing->requisicao_id = \Input::get('requisicao_id'); | |
$mailing->nome = \Input::get('nome'); | |
$mailing->descricao = \Input::get('descricao'); | |
$mailing->ativo = \Input::get('ativo'); | |
$mailing->login_sso = \Input::get('login_sso'); | |
$mailing->data_inicio = \Input::get('data_inicio'); | |
$mailing->data_fim = \Input::get('data_fim'); | |
$mailing->concluido = \Input::get('concluido'); | |
$mailing->contatos = \Input::get('contatos'); | |
$mailing->sincronizados = \Input::get('sincronizados'); | |
$mailing->rejeitados = \Input::get('rejeitados'); | |
// Sempre sincronizar o mailing | |
$mailing->sincronizado = 0; | |
$contatos = \Contato::getContatosByMailing($mailing->id); | |
foreach($contatos as $contato) { | |
$contato->sincronizador_status_id = 2; | |
$contato->save(); | |
} | |
if ($mailing->save()) { | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => false, | |
'flash' => ['success', 'Mailing atualizado com sucesso'], | |
200 | |
]); | |
} | |
\Session::flash('success', 'Mailing atualizado com sucesso!'); | |
return \Redirect::route('mailings.index'); | |
} | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => true, | |
'inputs' => Input::all(), | |
'flash' => ['error', 'Ocorreu um erro ao atualizar o Mailing. Tente novamente.'], | |
200 | |
]); | |
} | |
\Session::flash('error', 'Ocorreu um erro ao atualizar o Mailing. Tente novamente.'); | |
return \Redirect::back() | |
->withInput(); | |
} | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => true, | |
'inputs' => Input::all(), | |
'validation' => $validator->errors, | |
200 | |
]); | |
} | |
return \Redirect::back() | |
->withInput() | |
->withErrors($validator->errors); | |
} | |
/** | |
* Remove the specified resource from storage. | |
* DELETE /mailings/{id} | |
* | |
* @param | |
* @author Patrick Maciel <[email protected]> | |
* @versoin 1.0 | |
* @since 3.0 (CRS - Seleção)int $id | |
* @return Response | |
*/ | |
public function destroy($id) | |
{ | |
$mailing = \Mailing::findOrFail($id); | |
if ($mailing->delete()) { | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => false, | |
'flash' => ['success', 'Mailing excluído com sucesso'], | |
200 | |
]); | |
} | |
\Session::flash('success', 'Mailing excluído com sucesso'); | |
return \Redirect::back(); | |
} | |
if (Request::isJson()) { | |
return Response::json([ | |
'error' => true, | |
'flash' => ['error', 'Ocorreu um erro ao excluir o Mailing. Tente novamente.'], | |
200 | |
]); | |
} | |
\Session::flash('error', 'Ocorreu um erro ao excluir o Mailing. Tente novamente.'); | |
return \Redirect::back(); | |
} | |
/** | |
* Action responsável filtrar os contatos para um mailing | |
* | |
* @author Patrick Maciel <[email protected]> | |
* @version 1.0 | |
* @since 3.0 (CRS - Seleção) | |
* @return $this | |
*/ | |
public function generate() | |
{ | |
$requisicoes = \Requisicao::ativo()->lists('nome', 'id'); | |
$resultadoStatus = \ResultadoStatus::ativo()->lists('nome', 'id'); | |
$fontesDeCaptacao = \Campanha::ativo()->lists('nome', 'id'); | |
$etapas = \Etapa::ativo()->lists('nome', 'id'); | |
$crivos = \Crivo::ativo()->lists('nome', 'id'); | |
$targets = \Target::ativo()->lists('nome', 'id'); | |
$sexos = ['m' => 'Masculino', 'f' => 'Feminino']; | |
$tipoMailing = [ | |
0 => 'Todos aptos', | |
1 => 'Apenas contatos não contactados (1a etapa somente)', | |
2 => 'Recontato (reprovados, desistentes, não compareceu)', | |
3 => 'Aprovados na etapa anterior' | |
]; | |
$contatos = []; | |
if (Input::has('search')) { | |
$inputs = Input::all(); | |
$inputs['quantidade'] = empty($inputs['quantidade']) ? 50 : $inputs['quantidade']; | |
$contatos = \Busca::filtraContatosParaMailing(Input::all()); | |
if (empty($contatos) OR count($contatos) == 0) { | |
Session::flash('error', 'Nenhum contato e/ou candidato está apto a participar da requisição selecionada'); | |
return Redirect::back() | |
->withInput(); | |
} | |
} | |
return View::make('mailings.generate', compact( | |
'contatos', 'requisicoes', 'resultadoStatus', 'fontesDeCaptacao', 'etapas', | |
'sexos', 'crivos', 'targets', 'tipoMailing' | |
)) | |
->with('titulo', 'Gerar Mailing'); | |
} | |
/** | |
* Action responsável filtrar os contatos para um mailing | |
* | |
* @author Patrick Maciel <[email protected]> | |
* @version 1.0 | |
* @since 3.0 (CRS - Seleção) | |
* @return $this | |
*/ | |
public function storeFilteredMailing() | |
{ | |
set_time_limit(300); | |
$contatos = []; | |
// Se contém o parâmetro get search, realiza a busca pelos contatos, | |
// baseados nso filtros selecionados | |
if (Input::has('search')) { | |
$contatos = \Busca::filtraContatosParaMailing(Input::all(), false); | |
if (empty($contatos) OR !count($contatos)) { | |
Session::flash('warning', | |
'O Mailing deve ter ao menos 1 contato para ser gerado'); | |
return Redirect::back(); | |
} | |
} | |
$validator = new MailingValidator; | |
if ($validator->passes()) { | |
$mailing = new \Mailing(); | |
$mailing->requisicao_id = \Input::get('requisicao_id'); | |
$mailing->nome = \Input::get('nome'); | |
$mailing->descricao = \Input::get('descricao'); | |
$mailing->ativo = \Input::get('ativo'); | |
$mailing->login_sso = \Input::get('login_sso'); | |
$mailing->data_inicio = \Input::get('data_inicio'); | |
$mailing->data_fim = \Input::get('data_fim'); | |
$mailing->sincronizado = \Input::get('sincronizado'); | |
$mailing->concluido = \Input::get('concluido'); | |
$mailing->contatos = \Input::get('contatos'); | |
$mailing->sincronizados = \Input::get('sincronizados'); | |
$mailing->rejeitados = \Input::get('rejeitados'); | |
$mailing->contactados = \Input::get('contactados'); | |
if ($mailing->save()) { | |
// Processo para sincronizar o mailing atual com os contatos filtrados | |
$mailing->contatos()->sync(array_map(function($obj) { return $obj->id; }, $contatos)); | |
// $mailing->contatos()->update(['sincronizador_status_id' => 0]); | |
Mailing::setMailingContatosUsed($mailing->id); | |
// $mailing->contatos()->getRelatedIds()) | |
Session::flash('success', 'Mailing gerado com sucesso'); | |
return Redirect::route('mailings.index'); | |
} | |
} | |
Session::flash('warning', 'Ocorreram erros de validação'); | |
return Redirect::back() | |
->withInput() | |
->withErrors($validator->errors); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment