public bool ImportTimeSheet(out string message, DateTime dateJobExcute) { message = "error"; DateTime yesterday = dateJobExcute.AddDays(-1).Date; TMSDbContext DbContext = new TMSDbContext(); try { var listTimeSheet = DbContext.CHECKINOUT.Where(x => x.CHECKTIME >= yesterday && x.CHECKTIME < dateJobExcute).ToList(); if (listTimeSheet.Count > 0) { _tmpTimeSheetRepository.RemoveAllData(); List <FingerTimeSheetTmp> listTmp = new List <FingerTimeSheetTmp>(); foreach (var item in listTimeSheet) { FingerTimeSheetTmp tmp = new FingerTimeSheetTmp(); var user = DbContext.USERINFO.FirstOrDefault(x => x.USERID == item.USERID); if (user == null) { continue; } tmp.UserNo = user.Badgenumber; tmp.Date = item.CHECKTIME; tmp.AccName = DbContext.USERINFO.Where(x => x.USERID == item.USERID).Select(x => x.Name).FirstOrDefault(); _tmpTimeSheetRepository.Add(tmp); listTmp.Add(tmp); } _unitOfWork.Commit(); //import to table finger timesheet int countSuccess = 0; List <FingerTimeSheetTmpErrorModel> listModel = new List <FingerTimeSheetTmpErrorModel>(); if (_fingerTSService.ImportTimeSheet(out countSuccess, DbContext, out listModel)) { message = "Success"; log.Info("Job Time Sheet Run Success :" + DateTime.Now.ToString("dd'/'MM'/'yyyy HH:mm:ss")); return(true); } else { message = ""; StringBuilder sb = new StringBuilder(); foreach (var item in listModel) { sb.AppendLine(item.Error); } message = sb.ToString(); return(false); } } else { message = "FingerTimeSheetTmp table has no data !"; return(true); } } catch (Exception ex) { message = ex.Message; log.Error(ex.Message); if (ex.StackTrace != null) { log.Info(ex.StackTrace); } return(false); } }
/// <summary> /// Read timesheet form text file /// </summary> /// <param name="fullPath">full</param> /// <param name="outListTimeSheet"></param> /// <param name="outListTimeSheetError"></param> private void ReadTimeSheetFromTextFile(string fullPath, out List <FingerTimeSheetTmp> outListTimeSheet, out List <FingerTimeSheetTmpErrorModel> outListTimeSheetError) { outListTimeSheet = new List <FingerTimeSheetTmp>(); outListTimeSheetError = new List <FingerTimeSheetTmpErrorModel>(); string[] lines = System.IO.File.ReadAllLines(fullPath); int countLineError = 0; Regex regex = new Regex(CommonConstants.REGEX); foreach (var line in lines) { countLineError++; var result = regex.Split(line); string errorLine = ""; FingerTimeSheetTmpErrorModel fingerTimeSheetTmpError = new FingerTimeSheetTmpErrorModel(); if (result.Count() != 7) { fingerTimeSheetTmpError.Error = MessageSystem.ErrorInvalidDataFile; outListTimeSheetError.Add(fingerTimeSheetTmpError); continue; } else { int outInt; DateTime outDateTime; if (!int.TryParse(result[0], out outInt)) { errorLine = MessageSystem.InvalidDataAccNo; } if (_fingerMachineUserService.GetFingerMachineUserById(result[0]) == null) { errorLine = MessageSystem.InvalidDataAccNoNotExits; } if (!DateTime.TryParse(result[1], out outDateTime)) { errorLine = string.IsNullOrEmpty(errorLine) ? MessageSystem.InvalidDate : errorLine + CommonConstants.POINT + MessageSystem.InvalidDate; } if (!DateTime.TryParse(result[1], out outDateTime)) { errorLine = string.IsNullOrEmpty(errorLine) ? MessageSystem.InvalidDate : errorLine + CommonConstants.POINT + MessageSystem.InvalidDate; } if (!int.TryParse(result[3], out outInt)) { errorLine = string.IsNullOrEmpty(errorLine) ? MessageSystem.InvalidFingerNumber : errorLine + CommonConstants.POINT + MessageSystem.InvalidFingerNumber; } if (result[4].Length > 50) { errorLine = string.IsNullOrEmpty(errorLine) ? MessageSystem.InvalidAccountName : errorLine + CommonConstants.POINT + MessageSystem.InvalidAccountName; } //if (AppUserManager.FindByNameAsync(result[4]).Result == null) // errorLine = string.IsNullOrEmpty(errorLine) ? MessageSystem.InvalidDataAccNamNotExits : errorLine + CommonConstants.POINT + MessageSystem.InvalidDataAccNamNotExits; if (!string.IsNullOrEmpty(errorLine)) { fingerTimeSheetTmpError.UserNo = result[0]; fingerTimeSheetTmpError.Date = result[1]; fingerTimeSheetTmpError.NumberFinger = result[3]; fingerTimeSheetTmpError.UserName = result[4]; fingerTimeSheetTmpError.Error = errorLine; outListTimeSheetError.Add(fingerTimeSheetTmpError); continue; } FingerTimeSheetTmp fingerTimeSheetTmp = new FingerTimeSheetTmp(); fingerTimeSheetTmp.UserNo = result[0]; fingerTimeSheetTmp.Date = DateTime.Parse(result[1]); fingerTimeSheetTmp.NumberFinger = int.Parse(result[3]); fingerTimeSheetTmp.AccName = result[4]; outListTimeSheet.Add(fingerTimeSheetTmp); } } }
private static void GetDataTimeSheetFromListDate(List <DateTime> lstDate) { TMSDbContext DbContext = new TMSDbContext(); IDbFactory dbFactory = new DbFactory(); IAppUserRepository appUserRepository = new AppUserRepository(dbFactory); IChildcareLeaveRepository childcareLeaveRepository = new ChildcareLeaveRepository(dbFactory); IFingerTimeSheetRepository fingerTimeSheetRepository = new FingerTimeSheetRepository(dbFactory); ITimeDayRepository timeDayRepository = new TimeDayRepository(dbFactory); IFingerTimeSheetTmpRepository tmpTimeSheetRepository = new FingerTimeSheetTmpRepository(dbFactory); IOTRequestRepository OTRequestRepository = new OTRequestRepository(dbFactory); IFingerMachineUserRepository fingerMachineUserRepository = new FingerMachineUserRepository(dbFactory); IOTRequestUserRepository otrequestUserRepository = new OTRequestUserRepository(dbFactory); IReportRepository reportRepository = new ReportRepository(dbFactory); UnitOfWork unitOfWork = new UnitOfWork(dbFactory); IRequestRepository requestRepository = new RequestRepository(dbFactory); IExplanationRequestRepository explanationRepository = new ExplanationRequestRepository(dbFactory); IAbnormalCaseRepository abnormalRepository = new AbnormalCaseRepository(dbFactory); IEntitleDayAppUserRepository entitledayRepository = new EntitleDayAppUserRepository(dbFactory); IUserOnsiteRepository userOnsiteRepository = new UserOnsiteRepository(dbFactory); ISystemService systemService = new SystemService(); ISystemConfigRepository systemConfigRepository = new SystemConfigRepository(dbFactory); IHolidayRepository holidayRepository = new HolidayRepository(dbFactory); ICommonService commonService = new CommonService(systemConfigRepository, timeDayRepository, holidayRepository, unitOfWork); FingerTimeSheetService fingerTimeSheetService = new FingerTimeSheetService(fingerTimeSheetRepository, tmpTimeSheetRepository, timeDayRepository, OTRequestRepository, fingerMachineUserRepository, otrequestUserRepository, appUserRepository, childcareLeaveRepository, reportRepository, unitOfWork, requestRepository, explanationRepository, abnormalRepository, entitledayRepository, userOnsiteRepository, systemService, commonService); var listDateImportTimeSheet = new List <DateTime>(); try { foreach (var datetime in lstDate) { var date = datetime.Date; if (DbContext.FingerTimeSheets.Where(x => x.DayOfCheck == date).FirstOrDefault() == null) { listDateImportTimeSheet.Add(datetime); } } foreach (var datetime in listDateImportTimeSheet) { var date = datetime.Date; var date1 = datetime.AddDays(1).Date; var listTimeSheet = DbContext.CHECKINOUT.Where(x => x.CHECKTIME >= date && x.CHECKTIME < date1).ToList(); if (listTimeSheet.Count > 0) { tmpTimeSheetRepository.RemoveAllData(); List <FingerTimeSheetTmp> listTmp = new List <FingerTimeSheetTmp>(); foreach (var item in listTimeSheet) { FingerTimeSheetTmp tmp = new FingerTimeSheetTmp(); var user = DbContext.USERINFO.FirstOrDefault(x => x.USERID == item.USERID); if (user == null) { continue; } tmp.UserNo = user.Badgenumber; tmp.Date = item.CHECKTIME; tmp.AccName = DbContext.USERINFO.Where(x => x.USERID == item.USERID).Select(x => x.Name).FirstOrDefault(); tmpTimeSheetRepository.Add(tmp); listTmp.Add(tmp); } unitOfWork.Commit(); int count = 0; List <FingerTimeSheetTmpErrorModel> listModel = new List <FingerTimeSheetTmpErrorModel>(); var result = fingerTimeSheetService.ImportTimeSheet(out count, DbContext, out listModel); } } } catch (Exception e) { log.Error("ExData:" + e.Data); log.Error("ExMess:" + e.Message); } }
public FingerTimeSheetTmp Add(FingerTimeSheetTmp fingerTimeSheetTmp) { return(_fingerTimeSheetTmpRepository.Add(fingerTimeSheetTmp)); }
private static void GetDataTimeSheetFromListDateOnePerson(List <DateTime> lstDate, string username) { TMSDbContext DbContext = new TMSDbContext(); IDbFactory dbFactory = new DbFactory(); IAppUserRepository appUserRepository = new AppUserRepository(dbFactory); IChildcareLeaveRepository childcareLeaveRepository = new ChildcareLeaveRepository(dbFactory); IFingerTimeSheetRepository fingerTimeSheetRepository = new FingerTimeSheetRepository(dbFactory); ITimeDayRepository timeDayRepository = new TimeDayRepository(dbFactory); IFingerTimeSheetTmpRepository tmpTimeSheetRepository = new FingerTimeSheetTmpRepository(dbFactory); IOTRequestRepository OTRequestRepository = new OTRequestRepository(dbFactory); IFingerMachineUserRepository fingerMachineUserRepository = new FingerMachineUserRepository(dbFactory); IOTRequestUserRepository otrequestUserRepository = new OTRequestUserRepository(dbFactory); IReportRepository reportRepository = new ReportRepository(dbFactory); UnitOfWork unitOfWork = new UnitOfWork(dbFactory); IRequestRepository requestRepository = new RequestRepository(dbFactory); IExplanationRequestRepository explanationRepository = new ExplanationRequestRepository(dbFactory); IAbnormalCaseRepository abnormalRepository = new AbnormalCaseRepository(dbFactory); IEntitleDayAppUserRepository entitledayRepository = new EntitleDayAppUserRepository(dbFactory); IUserOnsiteRepository userOnsiteRepository = new UserOnsiteRepository(dbFactory); ISystemConfigRepository systemConfigRepository = new SystemConfigRepository(dbFactory); IHolidayRepository holidayRepository = new HolidayRepository(dbFactory); ICommonService commonService = new CommonService(systemConfigRepository, timeDayRepository, holidayRepository, unitOfWork); ISystemService systemService = new SystemService(); FingerTimeSheetService fingerTimeSheetService = new FingerTimeSheetService(fingerTimeSheetRepository, tmpTimeSheetRepository, timeDayRepository, OTRequestRepository, fingerMachineUserRepository, otrequestUserRepository, appUserRepository, childcareLeaveRepository, reportRepository, unitOfWork, requestRepository, explanationRepository, abnormalRepository, entitledayRepository, userOnsiteRepository, systemService, commonService); var userId = DbContext.Users.Where(x => x.UserName.Equals(username)).Select(x => x.Id).FirstOrDefault(); var lstUserNo = DbContext.FingerMachineUsers.Where(x => x.UserId.Equals(userId)).Select(x => x.ID); var userInfo = DbContext.USERINFO.Where(x => lstUserNo.Contains(x.Badgenumber)).FirstOrDefault(); foreach (var datetime in lstDate) { var date = datetime.Date; var date1 = datetime.AddDays(1).Date; var listTimeSheet = DbContext.CHECKINOUT.Where(x => x.CHECKTIME >= date && x.CHECKTIME < date1 && x.USERID.Equals(userInfo.USERID)).ToList(); if (listTimeSheet.Count > 0) { var timeSheetId = DbContext.FingerTimeSheets.Where(x => x.DayOfCheck == datetime && lstUserNo.Contains(x.UserNo)).Select(x => x.ID).AsEnumerable(); if ((DbContext.ExplanationRequests.Where(x => timeSheetId.Contains(x.TimeSheetId)).FirstOrDefault() != null)) { explanationRepository.DeleteExplanation(timeSheetId.FirstOrDefault()); } if ((DbContext.AbnormalCases.Where(x => timeSheetId.Contains(x.TimeSheetID)).FirstOrDefault() != null)) { abnormalRepository.DeleteAbnormalCase(timeSheetId.FirstOrDefault()); } if ((DbContext.FingerTimeSheets.Where(x => timeSheetId.Contains(x.ID)).FirstOrDefault() != null)) { fingerTimeSheetRepository.DeleteFingerTimeSheet(timeSheetId.FirstOrDefault()); } tmpTimeSheetRepository.RemoveAllData(); foreach (var item in listTimeSheet) { FingerTimeSheetTmp tmp = new FingerTimeSheetTmp(); var user = DbContext.USERINFO.FirstOrDefault(x => x.USERID == item.USERID); if (user == null) { continue; } tmp.UserNo = user.Badgenumber; tmp.Date = item.CHECKTIME; tmp.AccName = DbContext.USERINFO.Where(x => x.USERID == item.USERID).Select(x => x.Name).FirstOrDefault(); tmpTimeSheetRepository.Add(tmp); } unitOfWork.Commit(); int count = 0; List <FingerTimeSheetTmpErrorModel> listModel = new List <FingerTimeSheetTmpErrorModel>(); var result = fingerTimeSheetService.ReImportTimeSheet(out count, DbContext, out listModel); if (result) { log.Info("reimport success"); } else { log.Info("reimport fail"); } } } }