public ActionResult AjaxGenerateCutOffAttendance(GenerateCutOffAttendance model)
        {
            try
            {
                if (model.payrollGroupId == Guid.Empty)
                {
                    throw new Exception("Please select Payroll Group.");
                }

                //if (!this._attendanceService.CheckIfEmployeeAttendanceHasWorkDay(model.startDate, model.endDate))
                //{
                //    return this.JsonResultError(new Exception(), new { thereIsNoWorkDay = true });
                //}

                //if (!this._attendanceService.CheckIfEmployeeAttendanceHasRecord(model.startDate, model.endDate))
                //{
                //    return this.JsonResultError(new Exception(), new { noRecordAttendance = true });
                //}

                Guid dailyAttendanceId = Guid.Empty;
                this._attendanceService.GenerateCutOffAttendance(model, out dailyAttendanceId);
                return(this.JsonResultSuccess(new { id = dailyAttendanceId }));
            }
            catch (Exception ex)
            {
                return(this.JsonResultError(ex));
            }
        }
Exemple #2
0
        public void GenerateCutOffAttendance(GenerateCutOffAttendance model, out Guid cutOffAttendanceId)
        {
            var userId           = this.GetCurrentUserId();
            var cutOffAttendance = this._repoCutOffAttendance.Insert(new ta_CutOffAttendance()
            {
                generatedDate    = DateTime.Now.Date,
                payrollGroupId   = model.payrollGroupId,
                startDate        = model.startDate,
                endDate          = model.endDate,
                companyId        = this.GetCurrentCompanyId(),
                updatedBy        = userId,
                status           = (int)CUT_OFF_ATTENDANCE.Draft,
                changeStatusBy   = userId,
                changeStatusDate = DateTime.Now,
            });

            DateTime startDate = model.startDate.Date;
            DateTime endDate   = model.endDate.Date.AddDays(1).AddMinutes(-1);

            this._repoEmployee
            .Query().Filter(x => x.mf_Employee201.payrollGroupId == model.payrollGroupId && x.mf_Employee201.mf_EmploymentStatu.allowProcessPayroll)
            .Get()
            .Select(x => new { x.id, _201 = x.mf_Employee201, })
            .ToList()
            .ForEach(x =>
            {
                var summary = new ta_CutOffAttendanceSummary()
                {
                    ObjectState = ObjectState.Added,
                    employeeId  = x.id,
                    updatedBy   = userId,
                };
                FixEmployeeTotalWorkHours(model.startDate, model.endDate, summary, x._201);
                cutOffAttendance.ta_CutOffAttendanceSummaries.Add(summary);
            });

            this._unitOfWork.Save();

            cutOffAttendanceId = cutOffAttendance.id;
        }