public async Task <ActionResult> Create(string EmployeeId) { var currentUser = userManager.GetUserAsync(User).Result; if (EmployeeId == currentUser.Id) { return(NotFound("Bạn không thể chấm công cho chính mình.")); } var model = new CreateEditLichSuChamCongVM(); model.MaNhanVien = EmployeeId; model = await FeedSomeDataToCreateEditVM(model); model.Date = DateTime.Now; return(View(model)); }
private async Task <CreateEditLichSuChamCongVM> FeedSomeDataToCreateEditVM(CreateEditLichSuChamCongVM model) { var loaiLichBieus = await loaiLichBieuRepository.FindAll(); model.LoaiLichBieus = loaiLichBieus.Select(q => new SelectListItem { Text = q.TenLoaiLichBieu + ", Hệ số lương: " + q.HeSoLuongCoBan, Value = q.MaLoai }); model.NhanVien = mapper.Map <EmployeeVM>(await userManager.FindByIdAsync(model.MaNhanVien)); var hoursOfDate = new List <SelectListItem>(); for (int i = 0; i < 24; i++) { hoursOfDate.Add(new SelectListItem { Value = i.ToString(), Text = i.ToString() + " Giờ" }); } var minutesOfHour = new List <SelectListItem>(); for (int i = 0; i < 60; i++) { minutesOfHour.Add(new SelectListItem { Value = i.ToString(), Text = i.ToString() + " Phút" }); } model.HoursOfDay = hoursOfDate; model.MinutesOfHour = minutesOfHour; return(model); }
public async Task <ActionResult> Create(CreateEditLichSuChamCongVM model) { try { model = await FeedSomeDataToCreateEditVM(model); model.ThoiGianBatDau = new DateTime(model.Date.Year, model.Date.Month, model.Date.Day, int.Parse(model.StartHour), int.Parse(model.StartMinute), 0); model.ThoiGianKetThuc = new DateTime(model.Date.Year, model.Date.Month, model.Date.Day, int.Parse(model.EndHour), int.Parse(model.EndMinute), 0); if (!ModelState.IsValid) { return(View(model)); } if (model.ThoiGianBatDau.CompareTo(model.ThoiGianKetThuc) >= 0) { ModelState.AddModelError("", "Thời gian kết thúc phải lớn hơn thời gian bắt đầu"); return(View(model)); } if (model.ThoiGianKetThuc.Date.CompareTo(DateTime.Now) > 0) { ModelState.AddModelError("", "Bạn chỉ có thể chấm công trong ngày hôm nay và các ngày đã qua"); return(View(model)); } var LichSuChamCongList = await nhatKylamViecRepository.FindByMaNhanVien(model.NhanVien.Id); foreach (var item in LichSuChamCongList) { if (model.ThoiGianBatDau.CompareTo(item.ThoiGianBatDau) >= 0 && model.ThoiGianBatDau.CompareTo(item.ThoiGianKetThuc) < 0 || model.ThoiGianKetThuc.CompareTo(item.ThoiGianBatDau) > 0 && model.ThoiGianKetThuc.CompareTo(item.ThoiGianKetThuc) <= 0) { ModelState.AddModelError("", "Khoảng thời gian được chọn bị trùng với lịch biểu trước đó" + "\n Khoảng thời gian được chọn: " + model.ThoiGianBatDau + " => " + model.ThoiGianKetThuc + "\n Lịch biểu bị trùng: " + item.ThoiGianBatDau + " => " + item.ThoiGianKetThuc); return(View(model)); } } var approvedLeaveRequests = (await leaveRequestRepository.FindAll()) .Where(q => q.Approved == true && q.RequestingEmployeeId == model.MaNhanVien); foreach (var item in approvedLeaveRequests) { if (model.ThoiGianBatDau.Date.CompareTo(item.StartDate) >= 0 && model.ThoiGianBatDau.Date.CompareTo(item.EndDate) <= 0) { ModelState.AddModelError("", "Khoảng thời gian được chọn bị trùng với yêu cầu nghỉ phép được thực thi" + "\n Khoảng thời gian được chọn: " + model.ThoiGianBatDau + " => " + model.ThoiGianKetThuc + "\n Nghỉ phép được thực thi: " + item.StartDate + " => " + item.EndDate); return(View(model)); } } var IsThangDaXuatLuong = await phieuChi_NKLVRepository.DaXuatPhieuChiHayChua(model.MaNhanVien, model.Date.Month, model.Date.Year); if (IsThangDaXuatLuong) { ModelState.AddModelError("", $"Không thể chấm công vì tháng {model.Date.Month} năm {model.Date.Year} của nhân viên {model.NhanVien.LastName} {model.NhanVien.MiddleName} {model.NhanVien.FirstName} đã được xuất lương."); return(View(model)); } var nhatKyLamViecRecord = mapper.Map <NhatKyLamViec>(model); nhatKyLamViecRecord.NgayThemVaoHeThong = DateTime.Now; nhatKyLamViecRecord.MucLuongCoBan = model.NhanVien.MucLuongCoBan; nhatKyLamViecRecord.HeSoLuongCoBan = (await loaiLichBieuRepository.FindById(model.MaLoaiLichBieu)).HeSoLuongCoBan; nhatKyLamViecRecord.MaNhanVienThemVaoHeThong = (await userManager.GetUserAsync(User)).Id; nhatKyLamViecRecord.NhanVien = null; var isSuccess = await nhatKylamViecRepository.Create(nhatKyLamViecRecord); if (!isSuccess) { model.NhanVien = mapper.Map <EmployeeVM>(await userManager.FindByIdAsync(model.MaNhanVien)); ModelState.AddModelError("", "Lỗi xảy ra khi thêm record vào CSDL"); return(View(model)); } return(RedirectToAction(nameof(LichSuChamCongList), new { employeeId = model.MaNhanVien })); } catch (Exception ex) { model.NhanVien = mapper.Map <EmployeeVM>(await userManager.FindByIdAsync(model.MaNhanVien)); ModelState.AddModelError("", "Lỗi xảy ra khi cập nhật CSDL"); return(View(model)); } }