public HttpResponseMessage GetFingerPrintList(int FPMachineId) { CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext()); var list = checkInOutRepository.GetAllvwFingerPrint().Where(item => FPMachineId > 0); var res = Request.CreateResponse(HttpStatusCode.OK, list.ToList()); return(res); }
public void FingerPrintInsertList([FromBody] FingerPrintInsertListModel model) { if (model.ListFingerPrint != null && model.ListFingerPrint.Count > 0) { ////Xóa dữ liệu cũ //var listUserId = string.Join(",", list.Select(n => n.UserId.ToString()).Distinct().ToArray()); //string sqlQuery = "DELETE FROM Staff_FingerPrint WHERE UserId in (" + listUserId + ");"; //Domain.Helper.SqlHelper.ExecuteSQL(sqlQuery); CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext()); foreach (var item in model.ListFingerPrint) { var fingerPrint = checkInOutRepository.GetAllFingerPrint() .Where(i => i.UserId == item.UserId && i.Name == item.Name && i.FingerIndex == item.FingerIndex) .FirstOrDefault(); if (fingerPrint == null) { fingerPrint = new FingerPrint(); fingerPrint.CreatedDate = DateTime.Now; fingerPrint.ModifiedDate = DateTime.Now; fingerPrint.FPMachineId = item.FPMachineId; fingerPrint.UserId = item.UserId; fingerPrint.Name = item.Name; fingerPrint.FingerIndex = item.FingerIndex; fingerPrint.TmpData = item.TmpData; fingerPrint.Privilege = item.Privilege; fingerPrint.Password = item.Password; fingerPrint.Enabled = item.Enabled; fingerPrint.Flag = item.Flag; fingerPrint.FPMachineId = model.FPMachineId; checkInOutRepository.InsertFingerPrint(fingerPrint); } else { if (fingerPrint.FPMachineId == model.FPMachineId && string.IsNullOrEmpty(fingerPrint.TmpData)) { fingerPrint.ModifiedDate = DateTime.Now; fingerPrint.TmpData = item.TmpData; checkInOutRepository.UpdateFingerPrint(fingerPrint); } } } } }
public void InsertList([FromBody] List <CheckInOut> list) { CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext()); foreach (var item in list) { checkInOutRepository.InsertCheckInOut(item); } //Xóa trùng lặp string sqlQuery = " WITH CTE AS " + " ( SELECT TimeStr, UserEnrollNumber, ROW_NUMBER() OVER ( PARTITION BY TimeStr,UserEnrollNumber ORDER BY TimeStr DESC,UserEnrollNumber) AS RowID "+ " FROM [dbo].[CheckInOut] ) " + " DELETE FROM CTE " + " WHERE RowID > 1; "; Domain.Helper.SqlHelper.ExecuteSQL(sqlQuery); }
public void InsertList([FromBody] CheckInOutInsertListModel model) { if (model.ListCheckInOut != null && model.ListCheckInOut.Count > 0) { CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext()); foreach (var item in model.ListCheckInOut) { item.CreatedDate = DateTime.Now; checkInOutRepository.InsertCheckInOut(item); } //Xóa trùng lặp string sqlQuery = " WITH CTE AS " + " ( SELECT FPMachineId, TimeStr, UserId, ROW_NUMBER() OVER ( PARTITION BY FPMachineId, TimeStr, UserId ORDER BY TimeStr DESC, UserId, FPMachineId) AS RowID "+ " FROM [dbo].[Staff_CheckInOut] ) " + " DELETE FROM CTE " + " WHERE RowID > 1; "; Domain.Helper.SqlHelper.ExecuteSQL(sqlQuery); } }
public void Insert([FromBody] CheckInOut checkInOut) { CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext()); checkInOutRepository.InsertCheckInOut(checkInOut); }
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 }