Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }