Skip to content

Instantly share code, notes, and snippets.

@aaoliveira
Created March 7, 2016 01:11
Show Gist options
  • Save aaoliveira/745deac87ffa27dd21e9 to your computer and use it in GitHub Desktop.
Save aaoliveira/745deac87ffa27dd21e9 to your computer and use it in GitHub Desktop.
Controller atual
public function store(Request $request)
{
try {
DB::beginTransaction();
$data = $request->input();
$validator = Validator::make($data, [
'razao_social' => 'required',
'nome_fantasia' => 'required',
'telefone_1' => 'required',
'cnpj' => 'required',
'email_principal' => 'required',
'contact_name' => 'required',
]);
if ($validator->fails()) {
return redirect('company/create')->withErrors($validator)->withInput();
}
$create = Company::create($data);
if (!$create) {
throw new Exception('Não foi possivel realizar o cadastro de uma nova empresa. Por favor, tente novamente ou entre em contato com o Administrador.');
}
$password = $this->geraSenha();
$username = str_replace('.', '', $request->input('cnpj'));
$username = str_replace('/', '', $username);
$username = str_replace('-', '', $username);
$id = $create->id;
$dataUser = [
'username' => $username,
'password' => bcrypt($password),
'company_id' => $id,
'type' => Config::get('constants.USER_TYPE_COMPANY'),
'status' => Config::get('constants.STATUS_ACTIVE'),
];
$dataUser['profile_id'] = 2;
$dataSchool = array(
'nome_compl_escola' => $request->input('razao_social'),
'nome_abrev_escola' => $request->input('nome_fantasia'),
'contato_escola' => $request->input('telefone_1'),
'company_id' => $id,
);
$encode = json_encode($dataSchool);
$configuration['code'] = 1;
$configuration['value'] = $encode;
$configuration['company_id'] = $id;
if (!Configuration::create($configuration)) {
throw new Exception('Não foi possivel realizar o cadastro de configuração da empresa. Por favor, tente novamente ou entre em contato com o Administrador.');
}
Shift::init($id, $request->input('razao_social'));
Department::init($id, $request->input('razao_social'));
Office::init($id, $request->input('razao_social'));
// Seguimentos de Series
$infantil = Segment::initEnsinoInfantil($id, $request->input('razao_social'));
$fundamentalI = Segment::initFundamentalI($id, $request->input('razao_social'));
$fundamentalII = Segment::initFundamentalII($id, $request->input('razao_social'));
// Series (grupos)
Serie::initEnsinoInfantil($id, $request->input('razao_social'), $infantil->id);
Serie::initFundamentalI($id, $request->input('razao_social'), $fundamentalI->id);
Serie::initFundamentalII($id, $request->input('razao_social'), $fundamentalII->id);
Mail::send('emails.welcome', ['dataCompany' => $data, 'dataUser' => $dataUser, 'password' => $password], function ($m) use ($data) {
$m->from('yuri@simplespravoce.com', 'Equipe SGES');
$m->to($data['email_principal'], $data['contact_name'])->subject('Nova empresa cadastrada.');
});
if (!User::create($dataUser)) {
throw new Exception('Não foi possivel realizar o cadastro do usuário da empresa. Por favor, tente novamente ou entre em contato com o Administrador.');
}
Session::flash('success', 'Empresa criada com sucesso!');
DB::commit();
return Redirect::to('/company');
} catch (\Exception $e) {
DB::rollBack();
Session::flash('fail', $e->getMessage());
return Redirect::to('/company/create');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment