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)); } }
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; }