public static StaffAttendanceModel MapToModel(this ATT_Staff_Attendance source) { StaffAttendanceModel model = new StaffAttendanceModel(); model.StaffAttendanceId = source.StaffAttendanceId; model.CheckInDateTime = source.CheckInDateTime; model.CheckInDateTimeString = source.CheckInDateTime?.ToString("yyyy-MM-dd HH:mm:ss") ?? string.Empty; model.CheckOutDateTime = source.CheckOutDateTime; model.CheckOutDateTimeString = source.CheckOutDateTime?.ToString("yyyy-MM-dd HH:mm:ss") ?? string.Empty; model.RecCreatedDt = source.RecCreatedDt; model.RecCreatedDtString = source.AttendanceDate?.ToString("yyyy-MM-dd") ?? source.RecCreatedDt.ToString("yyyy-MM-dd"); model.RecCreatedBy = source.RecCreatedBy; model.RecLastUpdateDate = source.RecLastUpdateDate; model.RecLastUpdatedBy = source.RecLastUpdatedBy; model.AttendanceStatusId = source.AttendanceStatusId; model.AttendanceStatusName = source.SYS_Attendance_Status != null? source.SYS_Attendance_Status.Name: string.Empty; model.ReasonId = source.ReasonId; model.ReasonName = source.SYS_Attendance_Status_Reason != null? source.SYS_Attendance_Status_Reason.ReasonName: string.Empty; model.TeacherId = source.TeacherId; model.TeacherName = source.TR_Teachers.FirstName + " " + source.TR_Teachers.LastName; model.CampusId = source.CampusId; model.IsSystemUpdated = source.IsSystemUpdated; model.AttendanceDate = source.AttendanceDate; model.MarkedBy = source.MarkedBy; model.LeaveId = source.LeaveId; model.PayOption = source.PayOption; model.InServiceRequestId = source.InServiceRequestId; model.IncursionExcursionRequestId = source.IncursionExcursionRequestId; model.CheckInDate = source.CheckInDateTime?.ToString("yyyy-MM-dd") ?? string.Empty; model.CheckInTime = source.CheckInDateTime?.ToString("HH:mm") ?? string.Empty; model.CheckOutDate = source.CheckOutDateTime?.ToString("yyyy-MM-dd") ?? string.Empty; model.CheckOutTime = source.CheckOutDateTime?.ToString("HH:mm") ?? string.Empty; return(model); }
public bool?Post(StaffAttendanceModel model) { try { if (model.StaffAttendanceId == 0) { // NEW RECORD INSERTION ATT_Staff_Attendance attendance = new ATT_Staff_Attendance { //RecCreatedDt = DateTime.Now, RecCreatedBy = "FixApp", RecLastUpdateDate = DateTime.Now, RecLastUpdatedBy = "FixApp", TeacherId = model.TeacherId, CampusId = model.CampusId, AttendanceStatusId = model.AttendanceStatusId, ReasonId = model.ReasonId, //AttendanceDate = model.AttendanceDate?.Date + DateTime.Now.TimeOfDay }; if (model.AttendanceStatusId == null || model.AttendanceStatusId == 6) { var date = Convert.ToDateTime(model.CheckInDate); var time = Convert.ToDateTime(model.CheckInTime).TimeOfDay; DateTime result = date + time; attendance.CheckInDateTime = result; attendance.RecCreatedDt = result; attendance.AttendanceDate = result; if (!string.IsNullOrEmpty(model.CheckOutDate)) { date = Convert.ToDateTime(model.CheckOutDate); time = Convert.ToDateTime(model.CheckOutTime).TimeOfDay; result = date + time; attendance.CheckOutDateTime = result; } else { attendance.CheckOutDateTime = null; } } else if (model.AttendanceStatusId == 1) { Att_Staff_Leaves staffLeave = GetStaffLeave(model); if (staffLeave == null) { staffLeave = AddStaffLeaveRecord(model); } attendance.LeaveId = staffLeave.LeaveId; attendance.RecCreatedDt = model.AttendanceDate?.Date + DateTime.Now.TimeOfDay ?? DateTime.Now; attendance.AttendanceDate = model.AttendanceDate?.Date + DateTime.Now.TimeOfDay; } _db.ATT_Staff_Attendance.Add(attendance); _db.SaveChanges(); } else { // EDIT RECORD ATT_Staff_Attendance attendance = _db.ATT_Staff_Attendance.Find(model.StaffAttendanceId); if (attendance == null) { return(false); } if (model.AttendanceStatusId == null || model.AttendanceStatusId == 6) { var date = Convert.ToDateTime(model.CheckInDate); var time = Convert.ToDateTime(model.CheckInTime).TimeOfDay; DateTime result = date + time; attendance.CheckInDateTime = result; if (!string.IsNullOrEmpty(model.CheckOutDate)) { date = Convert.ToDateTime(model.CheckOutDate); time = Convert.ToDateTime(model.CheckOutTime).TimeOfDay; result = date + time; attendance.CheckOutDateTime = result; } else { attendance.CheckOutDateTime = null; } if (attendance.LeaveId > 0) { attendance.LeaveId = null; var leave = _db.Att_Staff_Leaves.Find(attendance.LeaveId); if (leave != null) { leave.isDeleted = true; _db.SaveChanges(); } } } else if (model.AttendanceStatusId == 1) { attendance.CheckInDateTime = null; attendance.CheckOutDateTime = null; if (attendance.ReasonId != model.ReasonId && (model.ReasonId == null || model.ReasonId == 18 || model.ReasonId == 19)) { if (attendance.LeaveId > 0) { Att_Staff_Leaves leave = GetStaffLeave(model); if (leave != null) { leave.isDeleted = true; _db.SaveChanges(); } } Att_Staff_Leaves newLeaveRec = AddStaffLeaveRecord(model); attendance.LeaveId = newLeaveRec.LeaveId; } } attendance.AttendanceStatusId = model.AttendanceStatusId; attendance.ReasonId = model.ReasonId; attendance.RecLastUpdateDate = DateTime.Now; attendance.RecLastUpdatedBy = "FixApp"; _db.SaveChanges(); } return(true); } catch (Exception ex) { LogUtility.WriteLog("StaffAttendanceApiController", ex.Message, "ATT_FIX_LOGS"); return(null); } }