public IList <CreateOrEditDataChamCongDto> GetDataChamCongAll() { IList <CreateOrEditDataChamCongDto> result = new List <CreateOrEditDataChamCongDto>(); var configs = AppConfigSection.GetInstance(); if (configs.Device.Enable) { LogUtils.WirteLogInfo("Schedule Get Data From Device Start"); AbriDoorSDK.Instance.Connect_Net(configs.Device.DeviceAddress, configs.Device.Port); int dwTMachineNumber = 0, dwEnrollNumber = 0, dwEMachineNumber = 0, dwVerifyMode = 0, dwInOutMode = 0, dwYear = 0, dwMonth = 0, dwDay = 0, dwHour = 0, dwMinute = 0; AbriDoorSDK.Instance.ReadAllGLogData(); while (AbriDoorSDK.Instance.GetAllGLogData(ref dwTMachineNumber, ref dwEnrollNumber, ref dwEMachineNumber, ref dwVerifyMode, ref dwInOutMode, ref dwYear, ref dwMonth, ref dwDay, ref dwHour, ref dwMinute)) { var timekeepingDate = new DateTime(dwYear, dwMonth, dwDay, dwHour, dwMinute, 0); var dataChamCong = new CreateOrEditDataChamCongDto(); dataChamCong.MaChamCong = dwEnrollNumber; dataChamCong.TimeCheck = timekeepingDate.ToString(BaseConfig.FormatDate); result.Add(dataChamCong); } AbriDoorSDK.Instance.Disconnect(); LogUtils.WirteLogInfo($"Schedule Get Data From Device End - Count: {result.Count}"); } return(result); }
//[AbpAuthorize(AppPermissions.Pages_DataChamCongs_Create)] protected virtual async Task Create(CreateOrEditDataChamCongDto input) { try { var workTimeMonday = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.WORKTIME_START_MONDAY)); var workTimeDaily = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.WORKTIME_START_DAILY)); /// kêt thúc làm việc buổi sáng: 12:00:00 var middleStart = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.MIDDLE_START)); /// giờ bắt đầu làm việc buổi chiều: 13:00:00 var middleEnd = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.MIDDLE_END)); var dataChamCong = ObjectMapper.Map <DataChamCong>(input); var checkTime = input.TimeCheckDate.Value.ToString(AppConsts.TimeFormat); dataChamCong.ProcessDate = input.TimeCheckDate.Value.Date; dataChamCong.CheckTime = checkTime; dataChamCong.TimeViolatingRuleFirstDuration = MathTimeViolatingRuleDurationFirst(dataChamCong.ProcessDate, dataChamCong.CheckTime, workTimeMonday, workTimeDaily, middleStart, middleEnd); dataChamCong.Status = DataChamCongConsts.PROCESS; dataChamCong.CheckIn = checkTime; await _dataChamCongRepository.InsertAsync(dataChamCong); } catch (Exception ex) { // return ex.Message.ToString(); throw; } }
public async Task CreateOrEdit(CreateOrEditDataChamCongDto input) { if (input.TimeCheckDate.HasValue) { var dataChamCong = await _dataChamCongRepository.FirstOrDefaultAsync(x => x.MaChamCong == input.MaChamCong && x.ProcessDate == input.TimeCheckDate.Value.Date); if (dataChamCong == null) { await Create(input); } else { input.Id = dataChamCong.Id; await Update(input); } } }
//[AbpAuthorize(AppPermissions.Pages_DataChamCongs_Edit)] protected virtual async Task Update(CreateOrEditDataChamCongDto input) { try { var workTimeMonday = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.WORKTIME_START_MONDAY)); var workTimeDaily = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.WORKTIME_START_DAILY)); var workTimeEnd = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.WORKTIME_END)); ///workTimeApprove: số giờ tối thiểu làm trong 1 buổi để được chấm công var workTimeApprove = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.WORK_TIME_APPROVE)); /// kêt thúc làm việc buổi sáng: 12:00:00 var middleStart = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.MIDDLE_START)); /// giờ bắt đầu làm việc buổi chiều: 13:00:00 var middleEnd = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.MIDDLE_END)); var dataChamCong = await _dataChamCongRepository.FirstOrDefaultAsync((int)input.Id); var timeCheckList = dataChamCong.CheckTime.Split('~'); var timeStr = input.TimeCheckDate.Value.ToString(AppConsts.TimeFormat); if (!timeCheckList.Any(x => x.Equals(timeStr))) { var checkTime = input.TimeCheckDate.Value.ToString(AppConsts.TimeFormat); dataChamCong.CheckOut = checkTime; dataChamCong.CheckTime += $"~{checkTime}"; dataChamCong.TimeWorkMorningDuration = MathTimeWorkMorningDuration(dataChamCong.CheckTime, dataChamCong.ProcessDate, workTimeMonday, workTimeDaily, workTimeApprove, middleStart, middleEnd); dataChamCong.TimeWorkAfternoonDuration = MathTimeWorkAfternoonDuration(dataChamCong.CheckTime, workTimeEnd, workTimeApprove, middleStart, middleEnd); dataChamCong.TimeOTDuration = MathTimeOTDurationDaily(dataChamCong.CheckTime, workTimeEnd); dataChamCong.TimeViolatingRuleFirstDuration = MathTimeViolatingRuleDurationFirst(dataChamCong.ProcessDate, dataChamCong.CheckTime, workTimeMonday, workTimeDaily, middleStart, middleEnd); dataChamCong.TimeViolatingRuleLastDuration = MathTimeViolatingRuleDurationLast(dataChamCong.CheckTime, middleEnd, workTimeEnd); dataChamCong.Status = DataChamCongConsts.SUCCESS; } } catch (Exception ex) { Logger.Error(ex.Message, ex); } }