public ActionResult AddWorkSchedules(int?shifts, string DayWork, int?StaffId) { var workSchedules = WorkSchedulesRepository.GetAllWorkSchedules().AsEnumerable().Where(x => x.ShiftsId == shifts && x.Day.Value == Convert.ToDateTime(DayWork) && x.StaffId == StaffId); vwTimekeepingViewModel model = new vwTimekeepingViewModel(); WorkSchedules work = new WorkSchedules(); if (workSchedules.Count() <= 0) { work.IsDeleted = false; work.CreatedDate = DateTime.Now; work.ModifiedDate = DateTime.Now; work.StaffId = StaffId; work.ShiftsId = shifts; work.Day = Convert.ToDateTime(DayWork); WorkSchedulesRepository.InsertWorkSchedules(work); var q = timekeepingRepository.GetvwTimekeepingByWorkSchedulesId(work.Id); AutoMapper.Mapper.Map(q, model); } else { var q = timekeepingRepository.GetvwTimekeepingByWorkSchedulesId(workSchedules.FirstOrDefault().Id); AutoMapper.Mapper.Map(q, model); } if (string.IsNullOrEmpty(model.HoursIn.ToString()) && string.IsNullOrEmpty(model.HoursOut.ToString())) { var dayoff = dayoffRepository.GetAllvwDayOff().Where(x => x.StaffId == model.StaffId && x.DayStart <= model.DayWork && model.DayWork <= x.DayEnd); foreach (var i in dayoff) { //model.Pay = i.Pay; model.DayOff = "P"; model.IdDayOff = i.Id; model.DayOffName = i.NameSymbol; model.DayOffCode = i.CodeSymbol; } if (model.DayWork.Value.ToString("dd/MM/yyyy") == DateTime.Now.ToString("dd/MM/yyyy") && string.IsNullOrEmpty(model.DayOff)) { model.DayOff = "DL"; // model.DayOffTooltip = "Đang làm"; } if (model.DayWork < DateTime.Now && string.IsNullOrEmpty(model.DayOff)) { model.DayOff = "KP"; // model.DayOffTooltip = "Nghỉ không phép"; } if (model.DayWork > DateTime.Now && string.IsNullOrEmpty(model.DayOff)) { model.DayOff = "CL"; // model.DayOffTooltip = "Chưa làm"; } } return(View(model)); }
private void DocSchedule() { lvSchedule.Items.Clear(); //Use .Any not Count if (lvDoctors.SelectedIndices.Count <= 0) { return; } var date = dtpSignPatientDate.Value; using (var context = new HospitalDbContext()) { //Select focused Id doctor from list view, lvHeader with id not exist int docId = Convert.ToInt32(lvDoctors.FocusedItem.SubItems[4].Text); //why static data? //int workTime = 17; DateTime schedule = dtpSignPatientDate.Value; schedule = schedule.AddHours(9); while (true) { WorkSchedules signIn = context.WorkSchedules.Include(x => x.Worker). Include(x => x.Patient).FirstOrDefault(x => x.Worker.Id == docId && x.Data.Year == date.Year && x.Data.Month == date.Month && x.Data.Day == date.Day && x.Data.Hour == schedule.Hour && x.Data.Minute == schedule.Minute); string patient = $"{signIn?.Patient.LastName} {signIn?.Patient.FirstName}"; var time = new ListViewItem(schedule.ToShortTimeString()); time.SubItems.Add(signIn == null ? "" : "busy"); time.SubItems.Add(patient); lvSchedule.Items.Add(time); schedule = schedule.AddMinutes(30); // repeat till 17 o clock will come if (schedule.Hour > 16 && schedule.Minute > 0) { break; } } } }
/*public ProductionOrder CreateBomForProductionOrder(decimal quantity, ProductionOrder mainProductionOrder) * { * var article = Articles.Include(a => a.ArticleBoms).ThenInclude(c => c.ArticleChild).Single(a => a.Id == mainProductionOrder.ArticleId); * foreach (var item in article.ArticleBoms) * { * var thisQuantity = quantity * item.Quantity; * * var prodOrder = new ProductionOrder * { * ArticleId = item.ArticleChildId, * Name = "Prod. Auftrag: " + article.Name, * Quantity = thisQuantity, * }; * ProductionOrders.Add(prodOrder); * * var prodOrderBom = new ProductionOrderBom * { * Quantity = thisQuantity, * ProductionOrderParentId = mainProductionOrder.Id, * * }; * mainProductionOrder.ProductionOrderBoms.Add(prodOrderBom); * * CreateDemandProductionOrderBom(item.ArticleChildId, thisQuantity); * } * SaveChanges(); * return mainProductionOrder; * }*/ public void CreateProductionOrderWorkSchedules(ProductionOrder productionOrder) { var abstractWorkSchedules = WorkSchedules.Where(a => a.ArticleId == productionOrder.ArticleId).ToList(); foreach (var abstractWorkSchedule in abstractWorkSchedules) { //add specific workSchedule var workSchedule = new ProductionOrderWorkSchedule(); abstractWorkSchedule.CopyPropertiesTo <IWorkSchedule>(workSchedule); workSchedule.ProductionOrderId = productionOrder.Id; workSchedule.MachineId = null; workSchedule.ProducingState = ProducingState.Created; workSchedule.Duration *= (int)productionOrder.Quantity; ProductionOrderWorkSchedules.Add(workSchedule); SaveChanges(); } }
private void FillLvSchedule(DateTime date) { lblDayOfWeek.Text = dtpAppointmentTime.Value.DayOfWeek.ToString(); var workingDate = date; // if needed replase this to app.config //int workTime = 17; lvAppointment.Items.Clear(); DateTime schedule = dtpAppointmentTime.Value; schedule = schedule.AddHours(9); using (var context = new HospitalDbContext()) { while (true) { WorkSchedules signIn = context.WorkSchedules.Include(x => x.Worker).Include(x => x.Patient). FirstOrDefault(x => x.Worker.Id == currentDoctor && x.Data.Year == workingDate.Year && x.Data.Month == workingDate.Month && x.Data.Day == workingDate.Day && x.Data.Hour == schedule.Hour && x.Data.Minute == schedule.Minute); string patient = $"{signIn?.Patient.LastName} {signIn?.Patient.FirstName}"; var time = new ListViewItem(schedule.ToShortTimeString()); //time.SubItems.Add(signIn == null ? "" : "busy"); time.SubItems.Add(patient); time.SubItems.Add(signIn?.Patient.Id.ToString()); lvAppointment.Items.Add(time); schedule = schedule.AddMinutes(30); //repeat till 17:00 o clock if (schedule.Hour > 16 && schedule.Minute > 0) { break; } } } }
private void btnSignUp_Click(object sender, EventArgs e) { //var a = Registry.Users.GetSubKeyNames(); var busy = lvSchedule.FocusedItem.SubItems[chBusy.Index].Text; if (string.IsNullOrWhiteSpace(busy)) { using (var context = new HospitalDbContext()) { var doc = SelectedDocId(); //var patient = sender.GetType().GUID; var myData = Convert.ToDateTime(lvSchedule.FocusedItem.SubItems[0].Text); var data = dtpSignPatientDate.Value; data = data.AddHours(myData.Hour); data = data.AddMinutes(myData.Minute); //get value via column header var room = Convert.ToInt32(lvDoctors.FocusedItem.SubItems[chRoom.Index].Text); Users myDoc = context.Users.Include(x => x.Adress) .Include(x => x.Position.WorkerPositionType) .FirstOrDefault(x => x.Id == doc); var myPatient = context.Users.FirstOrDefault(x => x.Id == _concreteUser); WorkSchedules currentSchedules = new WorkSchedules() { Worker = myDoc, Patient = myPatient, Data = data, // why it`s static number? WorkRoom = room, }; context.WorkSchedules.Add(currentSchedules); context.SaveChanges(); var result = $"\"{myPatient.FirstName} {myPatient.LastName}\" signed to \"{myDoc.Position.WorkerPositionType.Name}\"" + $" {data.ToLongDateString()} {data.ToShortTimeString()}"; MessageBox.Show(result, @"Sign up", MessageBoxButtons.OK); } this.Close(); } }
private void DocSchedule() { lvSchedule.Items.Clear(); //Use .Any not Count var date = dtpSignPatientDate.Value; using (var context = new HospitalDbContext()) { //why static data? //int workTime = 17; DateTime schedule = dtpSignPatientDate.Value; schedule = schedule.AddHours(9); while (true) { WorkSchedules signIn = context.WorkSchedules.Include(x => x.Worker). Include(x => x.Patient).FirstOrDefault(x => x.Worker.Id == _docId && x.Data.Year == date.Year && x.Data.Month == date.Month && x.Data.Day == date.Day && x.Data.Hour == schedule.Hour && x.Data.Minute == schedule.Minute); string patient = $"{signIn?.Patient.LastName} {signIn?.Patient.FirstName}"; var time = new ListViewItem(schedule.ToShortTimeString()); //time.SubItems.Add(signIn == null ? "" : "busy"); time.SubItems.Add(patient); lvSchedule.Items.Add(time); schedule = schedule.AddMinutes(30); // repeat till 17 o clock will come if (schedule.Hour > 16 && schedule.Minute > 0) { break; } } } }
public static void KiemTraVaTinhDuLieuChamCong(vwWorkSchedules item, WorkSchedules save_database, DateTime?HourIn, DateTime?HourOut) { StaffsRepository staffRepository = new StaffsRepository(new Domain.Staff.ErpStaffDbContext()); SymbolTimekeepingRepository symboltimekeepingRepository = new SymbolTimekeepingRepository(new Domain.Staff.ErpStaffDbContext()); DayOffRepository dayoffRepository = new DayOffRepository(new Domain.Staff.ErpStaffDbContext()); ShiftsRepository shiftsRepository = new ShiftsRepository(new Domain.Staff.ErpStaffDbContext()); CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext()); WorkSchedulesRepository workSchedulesRepository = new WorkSchedulesRepository(new Domain.Staff.ErpStaffDbContext()); RegisterForOvertimeRepository registerForOvertimeRepository = new RegisterForOvertimeRepository(new Domain.Staff.ErpStaffDbContext()); //lấy danh sách đăng ký tăng ca có thời gian bắt đầu tăng ca nằm trong khoảng thời gian của ca làm việc. //sắp xếp theo thời gian bắt đầu tăng ca... nếu có nhiều đăng ký tăng ca cùng 1 lúc thì chỉ lấy dòng đăng ký đầu tiên. //var dkTangCa = registerForOvertimeRepository.GetAllvwRegisterForOvertime().Where(x => x.StartHour >= item.HoursIn && x.StartHour <= item.HoursOut && x.StaffId == item.StaffId).OrderBy(x => x.StartHour); #region chuyển đổi thời gian của ca làm việc từ string sang DateTime //tách chuỗi thời gian của ca làm việc string strStartTime = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.StartTime; string strStartTimeOut = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.StartTimeOut; string strStartTimeIn = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.StartTimeIn; string strEndTime = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.EndTime; string strEndTimeIn = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.EndTimeIn; string strEndTimeOut = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.EndTimeOut; // chuyển đổi thời gian của ca làm việc từ string sang DateTime //DateTime d = DateTime.ParseExact("08/11/2017 12:00", "dd/MM/yyyy HH:mm", null); DateTime StartTime = DateTime.ParseExact(strStartTime, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture); DateTime StartTimeOut = DateTime.ParseExact(strStartTimeOut, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture); DateTime StartTimeIn = DateTime.ParseExact(strStartTimeIn, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture); DateTime EndTime = DateTime.ParseExact(strEndTime, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture); DateTime EndTimeIn = DateTime.ParseExact(strEndTimeIn, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture); DateTime EndTimeOut = DateTime.ParseExact(strEndTimeOut, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture); #endregion #region //nếu thời gian kết thúc ca mà nhỏ hơn thời gian bắt đầu ca thì xác định ca đó qua đêm... cộng thêm 1 ngày vào thời gian kết thúc ca. if (StartTime > EndTime) { EndTime = EndTime.AddDays(1); } if (StartTime > EndTimeIn) { EndTimeIn = EndTimeIn.AddDays(1); } if (StartTime > EndTimeOut) { EndTimeOut = EndTimeOut.AddDays(1); } #endregion //thời gian bắt đầu tính tăng ca int setting_overtime = Convert.ToInt32(Helpers.Common.GetSetting("time_starts_counting_overtime")); DateTime DateOverTime = EndTime.AddMinutes(setting_overtime); if (HourIn.Value != null) { save_database.HoursIn = HourIn; #region //nếu thời gian vào của nhân viên lớn hơn thời gian của ca làm việc thì tính thời gian đi trễ if (save_database.HoursIn > StartTime) { //tính số phút đi trễ TimeSpan a = save_database.HoursIn.Value.Subtract(StartTime); //trừ đi số giờ đi trễ cho phép. var q = Convert.ToInt32(a.TotalMinutes) - item.MinuteLate; //cập nhật số giờ đi trễ if (q > 0) { //đi trễ save_database.Total_minute_work_late = q; } else { //đi đúng giờ save_database.Total_minute_work_late = 0; } } else { //đi đúng giờ save_database.Total_minute_work_late = 0; } #endregion } else { //để đây xử lý sau, cho=0 để ko bị lỗi... còn trường hợp nghỉ phép nữa save_database.Total_minute_work_late = 0; } //var HourOut = listcheckinout.Where(xx => xx.TimeStr > EndTimeIn && xx.TimeDate.Value.ToString("dd/MM/yyyy") == EndTime.ToString("dd/MM/yyyy") && xx.UserId == item.UserEnrollNumber).OrderByDescending(xx => xx.TimeStr).ToList(); if (HourOut != null) { save_database.HoursOut = HourOut; } if (save_database.HoursOut >= DateOverTime) { #region tăng ca TimeSpan a = save_database.HoursOut.Value.Subtract(EndTime); save_database.Total_minute_work_overtime = Convert.ToInt32(a.TotalMinutes); #endregion } else { #region về sớm (về đúng giờ) không có tăng ca TimeSpan a = EndTime.Subtract(save_database.HoursOut.Value); var q = Convert.ToInt32(a.TotalMinutes) - item.MinuteEarly; if (q > 0) { //về sớm save_database.Total_minute_work_early = q; } else { //về đúng giờ save_database.Total_minute_work_early = 0; } save_database.Total_minute_work_overtime = 0; #endregion } #region tính số phút làm trong 1 ca if (save_database.HoursIn != null && save_database.HoursOut != null) { TimeSpan total = EndTime.Subtract(StartTime); save_database.Total_minute_work = Convert.ToInt32(total.TotalMinutes) + save_database.Total_minute_work_overtime - save_database.Total_minute_work_late - save_database.Total_minute_work_early; } #endregion #region xét ký hiệu chấm công if (save_database.Symbol == null) { //nếu chưa đi làm thì xét trường hợp có phép hoặc không phép. if (save_database.HoursIn == null && save_database.HoursOut == null) { var phep = dayoffRepository.GetAllvwDayOff().Where(x => x.DayStart <= save_database.Day && x.DayEnd >= save_database.Day && x.StaffId == save_database.StaffId); if (phep.Count() > 0) { save_database.Symbol = phep.FirstOrDefault().TypeDayOffId; } else { save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("K").Id; } } //nếu chỉ có giờ ra thì lưu ký hiệu đi làm chưa có else if (save_database.HoursIn == null) { save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("DLo").Id; save_database.Total_minute_work = 0; save_database.Total_minute_work_early = 0; save_database.Total_minute_work_late = 0; save_database.Total_minute_work_overtime = 0; } //nếu chỉ có giờ vào thì lưu ký hiệu chưa có giờ vào. else if (save_database.HoursOut == null) { save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("DVo").Id; save_database.Total_minute_work = 0; save_database.Total_minute_work_early = 0; save_database.Total_minute_work_late = 0; save_database.Total_minute_work_overtime = 0; } else { //nếu có đi làm thì xét trường hợp đi trễ, về sớm, đi đúng giờ, tăng ca if (save_database.Total_minute_work_late == 0 && save_database.Total_minute_work_early == 0) { save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("X").Id; } else if (save_database.Total_minute_work_late > 0 && save_database.Total_minute_work_early > 0) { save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("Tr,Sm").Id; } else if (save_database.Total_minute_work_late > 0) { save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("Tr").Id; } else if (save_database.Total_minute_work_early > 0) { save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("Sm").Id; } if (save_database.Total_minute_work_overtime > 0) { save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("+").Id; } } } #endregion }
public ActionResult Assign(FormCollection fc) { var model = new TimekeepingListViewModel(); var Id = Request["timekeepingListId"]; var timekeepingList = timekeepingListRepository.GetTimekeepingListById(Convert.ToInt32(Id)); var holiday = holidayRepository.GetAllHolidays().AsEnumerable().ToList(); var staff = StaffsRepository.GetvwAllStaffs().Where(x => x.BranchDepartmentId == timekeepingList.DepartmentId); ViewBag.staffList = staff; ViewBag.DayHoliday = holiday; DateTime aDateTime = new DateTime(timekeepingList.Year.Value, timekeepingList.Month.Value, 1); // Cộng thêm 1 tháng và trừ đi một ngày. DateTime retDateTime = aDateTime.AddMonths(1).AddDays(-1); ViewBag.aDateTime = aDateTime; ViewBag.retDateTime = retDateTime; var DayOff = categoryRepository.GetCategoryByCode("DayOffDefault").Where(x => x.Value == "True").AsEnumerable().ToList(); ViewBag.DayOff = DayOff; var ShiftsList = shiftsRepository.GetAllShifts().Where(x => x.CategoryShifts == timekeepingList.CategoryShifts).AsEnumerable(); ViewBag.ShiftsList = ShiftsList; var user = userRepository.GetUserById(WebSecurity.CurrentUserId); List <string> listIdShifts = new List <string>(); if (Request["shifts_id"] != null) { listIdShifts = Request["shifts_id"].Split(',').ToList(); } List <string> ListWorkSchedules = new List <string>(); foreach (var item in staff) { List <string> listIdCurrent = WorkSchedulesRepository.GetAllWorkSchedules().AsEnumerable().Where(x => aDateTime <= x.Day && x.Day <= retDateTime && x.ShiftsId != null && x.StaffId == item.Id).Select(x => x.ShiftsId.ToString().Replace(x.ShiftsId.ToString(), x.StaffId + "-" + x.Day.Value.ToString("dd/MM/yyyy") + "-" + x.ShiftsId)).ToList(); ListWorkSchedules = ListWorkSchedules.Union(listIdCurrent).ToList(); } // query id new to insert (not in database) List <string> listIdNew = listIdShifts.Where(id1 => !ListWorkSchedules.Any(id2 => id2 == id1)).ToList(); //query id to delete not listIdFromRequest List <string> listIdToDelete = ListWorkSchedules.Where(id1 => !listIdShifts.Any(id2 => id2 == id1)).ToList(); foreach (var id in listIdNew) { var item = new WorkSchedules(); item.CreatedUserId = WebSecurity.CurrentUserId; item.ModifiedUserId = WebSecurity.CurrentUserId; item.CreatedDate = DateTime.Now; item.ModifiedDate = DateTime.Now; item.IsDeleted = false; string[] arrVal = id.Split('-'); item.StaffId = int.Parse(arrVal[0], CultureInfo.InstalledUICulture); item.Day = DateTime.ParseExact(arrVal[1], "dd/MM/yyyy", CultureInfo.InvariantCulture); item.ShiftsId = int.Parse(arrVal[2], CultureInfo.InvariantCulture); item.TimekeepingListId = Convert.ToInt32(Id); WorkSchedulesRepository.InsertWorkSchedules(item); } foreach (var id in listIdToDelete) { string[] arrVal = id.Split('-'); int StaffId = int.Parse(arrVal[0], CultureInfo.InstalledUICulture); string Day = arrVal[1]; int ShiftsId = int.Parse(arrVal[2], CultureInfo.InvariantCulture); WorkSchedulesRepository.Delete(Day, StaffId, ShiftsId); } timekeepingList.Status = "timekeeping"; timekeepingListRepository.UpdateTimekeepingList(timekeepingList); // TempData[Globals.SuccessMessageKey] = "Lưu phân công ca làm việc thành công"; return(RedirectToAction("Detail", "TimekeepingList", new { area = "Staff", Id = Convert.ToInt32(Id) })); }
public ActionResult Edit(TimekeepingListViewModel model) { if (ModelState.IsValid) { if (Request["Submit"] == "Save") { var TimekeepingList = TimekeepingListRepository.GetTimekeepingListById(model.Id); //nếu danh sách chấm công sửa từ part-time sang full-time thì tự động phân công ca làm việc. if (TimekeepingList.CategoryShifts == "Part-time" && model.CategoryShifts == "Full-time") { //nếu danh sách khởi tạo chấm công là Toàn thời gian thì tự động tạo phân công cho tất cả nhân viên trong phòng ban if (model.CategoryShifts == "Full-time") { //chuẩn bị dữ liệu ngày nghỉ để duyệt ngày nghỉ thì không phân công. var DayOff = categoryRepository.GetCategoryByCode("DayOffDefault").Where(x => x.Value == "True").AsEnumerable().ToList(); //lấy ca làm việc toàn thời gian ra. var shift = shiftsRepository.GetAllShifts().Where(x => x.CategoryShifts == "Full-time").OrderByDescending(x => x.CreatedDate).FirstOrDefault(); //lấy danh sách nhân viên của phòng ban để phân công. var staff = StaffsRepository.GetAllStaffs().Where(x => x.BranchDepartmentId == TimekeepingList.DepartmentId).ToList(); //dựa vào tháng năm của danh sách khởi tạo ở trên, tạo ra list ngày trong tháng. DateTime aDateTime = new DateTime(TimekeepingList.Year.Value, TimekeepingList.Month.Value, 1); // Cộng thêm 1 tháng và trừ đi một ngày. DateTime retDateTime = aDateTime.AddMonths(1).AddDays(-1); //phần duyệt ngày trong tháng để thêm phân công cho từng nhân viên. for (DateTime dt = aDateTime; dt <= retDateTime; dt = dt.AddDays(1)) { if (DayOff.Where(x => Convert.ToInt32(x.OrderNo) == (int)dt.DayOfWeek && x.Value == "True").Count() <= 0) { foreach (var i in staff) { var item = new WorkSchedules(); item.CreatedUserId = WebSecurity.CurrentUserId; item.ModifiedUserId = WebSecurity.CurrentUserId; item.CreatedDate = DateTime.Now; item.ModifiedDate = DateTime.Now; item.IsDeleted = false; item.StaffId = i.Id; item.Day = dt; item.ShiftsId = shift.Id; item.TimekeepingListId = TimekeepingList.Id; WorkSchedulesRepository.InsertWorkSchedules(item); } } } } } AutoMapper.Mapper.Map(model, TimekeepingList); TimekeepingList.ModifiedUserId = WebSecurity.CurrentUserId; TimekeepingList.ModifiedDate = DateTime.Now; //if (model.CategoryShifts == "Full-time") //{ // TimekeepingList.Status = "assigned"; //} var department = departmentRepository.GetvwBranchDepartmentById(model.DepartmentId.Value); TimekeepingList.Name = "Danh sách chấm công tháng " + model.Month + " năm " + model.Year + " - " + department.Staff_DepartmentId + " - " + department.BranchName; TimekeepingListRepository.UpdateTimekeepingList(TimekeepingList); TempData[Globals.SuccessMessageKey] = App_GlobalResources.Wording.UpdateSuccess; return(RedirectToAction("Index")); } return(View(model)); } return(View(model)); //if (Request.UrlReferrer != null) // return Redirect(Request.UrlReferrer.AbsoluteUri); //return RedirectToAction("Index"); }
public ActionResult Create(TimekeepingListViewModel model) { if (ModelState.IsValid) { var TimekeepingList = new TimekeepingList(); AutoMapper.Mapper.Map(model, TimekeepingList); TimekeepingList.IsDeleted = false; TimekeepingList.CreatedUserId = WebSecurity.CurrentUserId; TimekeepingList.ModifiedUserId = WebSecurity.CurrentUserId; TimekeepingList.AssignedUserId = WebSecurity.CurrentUserId; TimekeepingList.CreatedDate = DateTime.Now; TimekeepingList.ModifiedDate = DateTime.Now; TimekeepingList.CheckSalary = false; if (model.Sale_BranchId != null) { if (model.DepartmentId != null) { var department = departmentRepository.GetvwBranchDepartmentById(model.DepartmentId.Value); TimekeepingList.Name = "Danh sách chấm công tháng " + model.Month + " năm " + model.Year + " - " + department.Staff_DepartmentId + " - " + department.BranchName; } else { var branch = branchRepository.GetBranchById(model.Sale_BranchId.Value); TimekeepingList.Name = "Danh sách chấm công tháng " + model.Month + " năm " + model.Year + " - " + branch.Name; } } else { TimekeepingList.Name = "Danh sách chấm công tháng " + model.Month + " năm " + model.Year + " - Tất cả chi nhánh"; } //mặc định khởi tạo danh sách thì trạng thái là pending... nếu có thêm phân công tự động thì là assigned if (model.CategoryShifts == "Full-time") { TimekeepingList.Status = "timekeeping"; } else { TimekeepingList.Status = "assign"; } TimekeepingListRepository.InsertTimekeepingList(TimekeepingList); var prefix2 = Erp.BackOffice.Helpers.Common.GetSetting("prefixOrderNo_timekeepingList"); TimekeepingList.Code = Erp.BackOffice.Helpers.Common.GetCode(prefix2, TimekeepingList.Id); TimekeepingListRepository.UpdateTimekeepingList(TimekeepingList); //nếu danh sách khởi tạo chấm công là Toàn thời gian thì tự động tạo phân công cho tất cả nhân viên trong phòng ban if (model.CategoryShifts == "Full-time") { //chuẩn bị dữ liệu ngày nghỉ để duyệt ngày nghỉ thì không phân công. var DayOff = categoryRepository.GetCategoryByCode("DayOffDefault").Where(x => x.Value == "True").AsEnumerable().ToList(); //lấy ca làm việc toàn thời gian ra. var shift = shiftsRepository.GetAllShifts().Where(x => x.CategoryShifts == "Full-time").OrderByDescending(x => x.CreatedDate).FirstOrDefault(); //lấy danh sách nhân viên của phòng ban để phân công. List <vwStaffs> list_staff_insert = new List <vwStaffs>(); var staff = StaffsRepository.GetvwAllStaffs().Where(x => !string.IsNullOrEmpty(x.BranchName) && x.IsWorking == true); if (model.Sale_BranchId != null) { if (model.DepartmentId != null) { list_staff_insert = staff.Where(x => x.BranchDepartmentId == model.DepartmentId).ToList(); } else { list_staff_insert = staff.Where(x => x.Sale_BranchId == model.Sale_BranchId).ToList(); } } else { list_staff_insert = staff.OrderBy(x => x.Id).ToList(); } //dựa vào tháng năm của danh sách khởi tạo ở trên, tạo ra list ngày trong tháng. DateTime aDateTime = new DateTime(TimekeepingList.Year.Value, TimekeepingList.Month.Value, 1); // Cộng thêm 1 tháng và trừ đi một ngày. DateTime retDateTime = aDateTime.AddMonths(1).AddDays(-1); //phần duyệt ngày trong tháng để thêm phân công cho từng nhân viên. for (DateTime dt = aDateTime; dt <= retDateTime; dt = dt.AddDays(1)) { if (DayOff.Where(x => Convert.ToInt32(x.OrderNo) == (int)dt.DayOfWeek && x.Value == "True").Count() <= 0) { foreach (var i in list_staff_insert) { var item = new WorkSchedules(); item.CreatedUserId = WebSecurity.CurrentUserId; item.ModifiedUserId = WebSecurity.CurrentUserId; item.CreatedDate = DateTime.Now; item.ModifiedDate = DateTime.Now; item.IsDeleted = false; item.StaffId = i.Id; item.Day = dt; item.ShiftsId = shift.Id; item.TimekeepingListId = TimekeepingList.Id; WorkSchedulesRepository.InsertWorkSchedules(item); } } } } //TempData[Globals.SuccessMessageKey] = App_GlobalResources.Wording.InsertSuccess; return(RedirectToAction("Detail", "TimekeepingList", new { area = "Staff", Id = TimekeepingList.Id })); } return(View(model)); }