示例#1
0
        public ActionResult AddTimekeeping(DayOffViewModel model)
        {
            var urlRefer = Request["UrlReferrer"];

            if (ModelState.IsValid)
            {
                model.TypeList = Helpers.SelectListHelper.GetSelectList_SymbolTimekeeping(null, App_GlobalResources.Wording.Empty, true);
                var DayOff = new Domain.Staff.Entities.DayOff();
                AutoMapper.Mapper.Map(model, DayOff);
                DayOff.IsDeleted      = false;
                DayOff.CreatedUserId  = WebSecurity.CurrentUserId;
                DayOff.ModifiedUserId = WebSecurity.CurrentUserId;
                DayOff.CreatedDate    = DateTime.Now;
                DayOff.ModifiedDate   = DateTime.Now;
                var dates = new List <DateTime>();
                for (DateTime dt = model.DayStart.Value; dt <= model.DayEnd.Value; dt = dt.AddDays(1))
                {
                    dates.Add(dt);
                }
                DayOff.Quantity = dates.Count();
                var typeDayOff = typeDayOffRepository.GetSymbolTimekeepingById(model.TypeDayOffId.Value);
                if (typeDayOff.DayOff == true)
                {
                    var dayoff         = DayOffRepository.GetAllDayOff().AsEnumerable().Where(x => x.TypeDayOffId == model.TypeDayOffId && x.DayStart.Value.ToString("yyyy") == model.DayStart.Value.ToString("yyyy") && x.StaffId == model.StaffId).ToList();
                    int QuantityDayOff = 0;
                    if (dayoff.Count() > 0)
                    {
                        foreach (var item in dayoff)
                        {
                            QuantityDayOff += item.Quantity.Value;
                        }
                    }
                    DayOff.QuantityNotUsed = typeDayOff.Quantity - (QuantityDayOff + DayOff.Quantity);
                    if (DayOff.QuantityNotUsed < 0)
                    {
                        TempData[Globals.FailedMessageKey] = "Số ngày nghỉ" + model.NameSymbol + " còn lại của bạn không đủ";
                        if (Request["IsPopup"] == "true" || Request["IsPopup"] == "True")
                        {
                            ViewBag.closePopup = "true";
                        }
                        ViewBag.urlRefer = urlRefer;
                        return(View(model));
                    }
                }
                else
                {
                    DayOffRepository.InsertDayOff(DayOff);
                    if (Request["IsPopup"] == "true" || Request["IsPopup"] == "True")
                    {
                        TempData[Globals.SuccessMessageKey] = App_GlobalResources.Wording.InsertSuccess;
                        ViewBag.closePopup = "true";
                        model.Id           = DayOff.Id;
                        ViewBag.urlRefer   = urlRefer;
                        return(View(model));
                    }
                }
                return(Redirect(urlRefer));
            }
            return(View(model));
        }
示例#2
0
        public ActionResult Create(DayOffViewModel model)
        {
            var urlRefer  = Request["UrlReferrer"];
            var staffList = staffRepository.GetvwAllStaffs()
                            .Select(item => new StaffsViewModel
            {
                Code         = item.Code,
                Name         = item.Name,
                Id           = item.Id,
                BranchName   = item.BranchName,
                ProfileImage = item.ProfileImage
            });

            ViewBag.staffList = staffList;
            if (ModelState.IsValid)
            {
                model.TypeList = Helpers.SelectListHelper.GetSelectList_SymbolTimekeeping(null, App_GlobalResources.Wording.Empty, true);
                var DayOff = new Domain.Staff.Entities.DayOff();
                AutoMapper.Mapper.Map(model, DayOff);
                DayOff.IsDeleted      = false;
                DayOff.CreatedUserId  = WebSecurity.CurrentUserId;
                DayOff.ModifiedUserId = WebSecurity.CurrentUserId;
                DayOff.CreatedDate    = DateTime.Now;
                DayOff.ModifiedDate   = DateTime.Now;
                var dates = new List <DateTime>();
                //lấy danh sách các ngày nghỉ trong tuần, theo quy định từng công ty.
                var off     = categoryRepository.GetCategoryByCode("DayOffDefault").Where(x => x.Value == "True").ToList();
                var holiday = holidayRepository.GetAllHolidays().ToList();
                for (DateTime dt = model.DayStart.Value; dt <= model.DayEnd.Value; dt = dt.AddDays(1))
                {
                    //không tính ngày lễ , ngày nghỉ cuối tuần vào trong ngày xin nghỉ phép.
                    if (holiday.Where(x => x.DayStart <= dt && dt <= x.DayEnd).Count() <= 0)
                    {
                        if (off.Where(x => x.OrderNo.Value == (int)dt.DayOfWeek).Count() <= 0)
                        {
                            dates.Add(dt);
                        }
                    }
                }
                DayOff.Quantity = dates.Count();
                var typeDayOff = typeDayOffRepository.GetSymbolTimekeepingById(model.TypeDayOffId.Value);
                if (typeDayOff.DayOff == true)
                {
                    //lấy danh sách đơn xin nghỉ phép của nhân viên trong năm thuộc loại phép đang xin nghỉ
                    var dayoff         = DayOffRepository.GetAllDayOff().AsEnumerable().Where(x => x.TypeDayOffId == model.TypeDayOffId && x.DayStart.Value.ToString("yyyy") == model.DayStart.Value.ToString("yyyy") && x.StaffId == model.StaffId).ToList();
                    int QuantityDayOff = 0;
                    if (dayoff.Count() > 0)
                    {
                        foreach (var item in dayoff)
                        {
                            QuantityDayOff += item.Quantity.Value;
                        }
                    }
                    DayOff.QuantityNotUsed = typeDayOff.Quantity - (QuantityDayOff + DayOff.Quantity);
                    if (DayOff.QuantityNotUsed < 0)
                    {
                        TempData[Globals.FailedMessageKey] = "Số ngày nghỉ" + model.NameSymbol + " còn lại của bạn không đủ";
                        if (Request["IsPopup"] == "true" || Request["IsPopup"] == "True")
                        {
                            ViewBag.closePopup = "true";
                        }
                        ViewBag.urlRefer = urlRefer;
                        return(View(model));
                    }
                }
                DayOffRepository.InsertDayOff(DayOff);
                //tạo mã tự động
                var prefix2 = Erp.BackOffice.Helpers.Common.GetSetting("prefixOrderNo_DayOff");
                DayOff.Code = Erp.BackOffice.Helpers.Common.GetCode(prefix2, DayOff.Id);
                DayOffRepository.UpdateDayOff(DayOff);
                //var workShedules=workSchedulesRepository.GetvwAllWorkSchedules().Any(dates).Where(x=>x.Day==item.ToShortDateString())
                if (Request["IsPopup"] == "true" || Request["IsPopup"] == "True")
                {
                    TempData[Globals.SuccessMessageKey] = App_GlobalResources.Wording.InsertSuccess;
                    ViewBag.closePopup = "true";
                    model.Id           = DayOff.Id;
                    ViewBag.urlRefer   = urlRefer;
                    return(View(model));
                }
                return(Redirect(urlRefer));
            }
            return(View(model));
        }