Exemple #1
0
        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);
        }
Exemple #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);
            }
        }