コード例 #1
0
ファイル: HolidayController.cs プロジェクト: StePampy/GseWeb
        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));
            }
        }