Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
            }
        }