Example #1
0
        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);
            }
        }
Example #2
0
        /// <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);
                }
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
 public FingerTimeSheetTmp Add(FingerTimeSheetTmp fingerTimeSheetTmp)
 {
     return(_fingerTimeSheetTmpRepository.Add(fingerTimeSheetTmp));
 }
Example #5
0
        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");
                    }
                }
            }
        }