public PartialViewResult CreateHoliday(Holiday model) { ViewBag.Title = "Nuova Richiesta"; // verifiche if (model != null && model.Type == Holiday_Type.Ferie) { if (model.Date_To < model.Date_From) { ModelState.AddModelError("", "Il Giorno di Fine non può essere minore del Giorno di Inizio"); } if (db.Holidays.Any(x => x.UserId == model.UserId && (model.Date_From >= x.Date_From && model.Date_From <= x.Date_To || model.Date_To >= x.Date_From && model.Date_To <= x.Date_To))) { ModelState.AddModelError("", "Esiste già una richiesta per le date selezionate"); } } if (model != null && model.Type == Holiday_Type.Permesso) { model.Date_To = model.Date_From; // Veriica Ore if (model.Time_From >= model.Time_To) { ModelState.AddModelError("", "Il permesso deve essre maggiore di 00:00:00 ore"); } // Verifica motivazione if (string.IsNullOrWhiteSpace(model.Request_Note)) { ModelState.AddModelError("", "Inserire Motivazione"); } // Verifica Data if (db.Holidays.Any(x => x.UserId == model.UserId & model.Date_From >= x.Date_From && model.Date_From <= x.Date_To)) { ModelState.AddModelError("", "Esiste già una richiesta per la data selezionata"); } // Verifica Ore Ordinarie var ord = db.GetOrdinaryHours(model.UserId, model.Date_From.DayOfWeek); if ((model.Time_To - model.Time_From) > ord) { ModelState.AddModelError("", "Il permesso non può essere maggiore delle ore ordinarie"); } } if (!ModelState.IsValid) { return(PartialView("_CreateHoliday", model)); } var user = db.Users.Find(model.UserId); model.User = user; model.Status = Status_Request.Attesa; model.Request_Date = DateTime.Now; model.Response_Date = new DateTime(); model.UserApproveId = null; // Invio Email try { SendEmailHoliday(model); } catch (Exception ex) { ModelState.AddModelError("", string.Format("Impossibile Inviare la Richiesta: {0}", ex.Message)); return(PartialView("_CreateHoliday", model)); } // Inserimento/Modifica in database try { db.Holidays.Add(model); db.SaveChanges(); ViewBag.Message = "Aggiunta con Successo!"; ViewBag.ReturnUrl = string.Format("/Holiday/Index?year={0}", model.Date_From.Year); return(PartialView("../Shared/_Success")); } catch (Exception ex) { ModelState.AddModelError("", ex.MySqlExMessage()); return(PartialView("_CreateHoliday", model)); } }