public function store(Request $request) { $rules = ['period_id' => 'required|exists:periods,id', 'start' => 'required|date', 'end' => 'required|date']; $messages = ['start.required' => 'Es necesario definir la fecha de inicio.', 'end.required' => 'Es necesario definir la fecha de fin.']; $v = Validator::make($request->all(), $rules, $messages); if ($v->fails()) { return back()->withErrors($v)->withInput(); } // Custom validations if ($request->get('start') > $request->get('end')) { $errors['range'] = 'Las fechas son inconsistentes.'; } $period = Period::find($request->get('period_id')); // Exist an automatic cast from string to carbon // But the comparison for "2016-01-15" < $period->start // is evaluated as TRUE when they have the same date $start = Carbon::createFromFormat("Y-m-d", $request->get('start')); $end = Carbon::createFromFormat("Y-m-d", $request->get('end')); if ($start < $period->start) { $errors['start'] = 'La fecha de inicio debe ser posterior al inicio del periodo.'; } if ($end > $period->end) { $errors['end'] = 'La fecha de fin debe ser anterior al fin del periodo.'; } if (isset($errors)) { return back()->withErrors($errors)->withInput(); } Unit::create($request->all()); return back()->with('success', 'Unidad registrada exitosamente.'); }
public function destroy($id) { $period = Period::find($id); $units = $period->units; if ($units->count() > 0) { return back()->with('error', 'No es posible eliminar un periodo asociado a unidades.'); } $period->delete(); return back(); }