示例#1
0
        protected async Task CreateMobile(CreateOrEditMobileDataChamCongDto 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);
                DataChamCong dataChamCong = new DataChamCong();
                dataChamCong.MaChamCong  = input.MaChamCong;
                dataChamCong.ProcessDate = input.ProcessDate.Date;
                dataChamCong.CheckTime   = input.CheckTime;
                dataChamCong.TimeViolatingRuleFirstDuration = MathTimeViolatingRuleDurationFirst(input.ProcessDate.Date, dataChamCong.CheckTime, workTimeMonday, workTimeDaily, middleStart, middleEnd);
                dataChamCong.Status  = DataChamCongConsts.PROCESS;
                dataChamCong.CheckIn = input.CheckTime;

                await _dataChamCongRepository.InsertAsync(dataChamCong);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
示例#2
0
        public async Task CreateOrEditMobile(int maChamCong)
        {
            try
            {
                DateTime now          = DateTime.Now;
                var      dataChamCong = await _dataChamCongRepository.FirstOrDefaultAsync(x => x.MaChamCong == maChamCong && x.ProcessDate.Date == now.Date);

                var input = new CreateOrEditMobileDataChamCongDto()
                {
                    CheckTime   = now.ToString("HH:mm") + ":00",
                    MaChamCong  = maChamCong,
                    ProcessDate = DateTime.Now.Date
                };
                if (dataChamCong == null)
                {
                    await CreateMobile(input);
                }
                else
                {
                    input.Id = dataChamCong.Id;
                    await UpdateMobile(input);
                }
            }
            catch (Exception e)
            {
                Logger.Error(e.Message, e);
            }
        }
示例#3
0
        public async Task CreateOrEditMobile(CreateOrEditMobileDataChamCongDto input)
        {
            var dataChamCong = await _dataChamCongRepository.FirstOrDefaultAsync(x => x.MaChamCong == input.MaChamCong && x.ProcessDate == input.ProcessDate.Date);

            if (dataChamCong == null)
            {
                await CreateMobile(input);
            }
            else
            {
                input.Id = dataChamCong.Id;
                await UpdateMobile(input);
            }
        }
示例#4
0
        //[AbpAuthorize(AppPermissions.Pages_DataChamCongs_Edit)]
        protected virtual async Task UpdateMobile(CreateOrEditMobileDataChamCongDto input)
        {
            try
            {
                // 7h30
                var workTimeMonday = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.WORKTIME_START_MONDAY));

                // 7h45
                var workTimeDaily = await _truongGiaoDichRepository.FirstOrDefaultAsync(x => x.Code.Equals(TruongGiaoDichConsts.WORKTIME) && x.CDName.Equals(DataChamCongConsts.WORKTIME_START_DAILY));

                // 17h30
                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.CheckTime;

                if (!timeCheckList.Any(x => x.Equals(timeStr)))
                {
                    var checkTime = input.CheckTime;

                    dataChamCong.CheckOut                       = checkTime;
                    dataChamCong.ProcessDate                    = input.ProcessDate.Date;
                    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);
            }
        }