public HabitResponse UpdateHabit(Guid userId, Guid habitId, HabitRequest habitRequest) { ValidateUserID(userId, habitId); Habit habit = habitRepository.GetHabitById(habitId); Habit updatedHabit = HabitFactory.CreateUpdatedData(habitRequest, habit); List <DayOff> dayOffList = DayOffFactory.Create(habitRequest.DaysOff, habit.ID); dayOffRepository.UpdateDayOff(dayOffList, habitId); habitRepository.UpdateHabit(habitId, updatedHabit); return(ConvertFromHabitToHabitResponse(updatedHabit)); }
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)); }