private Att_Staff_Leaves AddStaffLeaveRecord(StaffAttendanceModel model) { var dayId = model.ReasonId == 18 ? 2 : model.ReasonId == 19 ? 3 : 1; var attDate = model.AttendanceDate ?? DateTime.Now; TimeSpan[] schedule = GetStartFinishTimes(dayId, model); Att_Staff_Leaves leave = new Att_Staff_Leaves { StartDate = attDate.Date + schedule[0], EndDate = attDate.Date + schedule[1], StatusId = 1, DayOptionId = dayId, IsArchieved = false, LeaveTypeId = 8, TeacherId = model.TeacherId, RecCreatedDt = DateTime.Now, RecLastUpdatedDt = DateTime.Now, RecCreatedBy = 0, RecUpdatedBy = 0, isDeleted = false, Attachment = null }; _db.Att_Staff_Leaves.Add(leave); _db.SaveChanges(); return(leave); }
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); } }