예제 #1
0
        //Replace New TimeIn and Out with Old TimeIN and Out in Attendance Data
        public ManualAttendanceProcess(string EmpDate, string JobCardName, bool JobCardStatus, DateTime NewTimeIn, DateTime NewTimeOut, string NewDutyCode, int _UserID, TimeSpan _NewDutyTime, string _Remarks,short _ShiftMins)
        {
            _OldAttData = context.AttDatas.First(aa => aa.EmpDate == EmpDate);
            if (_OldAttData != null)
            {
                if (JobCardStatus == false)
                {
                    SaveOldAttData(_OldAttData, _UserID);
                    if (SaveNewAttData(NewTimeIn, NewTimeOut, NewDutyCode, _NewDutyTime, _Remarks,_ShiftMins))
                    {

                        _OldAttData.TimeIn = NewTimeIn;
                        _OldAttData.TimeOut = NewTimeOut;
                        _OldAttData.DutyCode = NewDutyCode;
                        _OldAttData.DutyTime = _NewDutyTime;
                        _OldAttData.WorkMin = 0;
                        _OldAttData.GZOTMin = 0;
                        _OldAttData.OTMin = 0;
                        _OldAttData.LateIn = 0;
                        _OldAttData.EarlyIn = 0;
                        _OldAttData.EarlyOut = 0;
                        _OldAttData.LateOut = 0;
                        _OldAttData.StatusAB = false;
                        _OldAttData.StatusP = true;
                        _OldAttData.StatusEO = null;
                        _OldAttData.StatusEI = null;
                        _OldAttData.StatusOT = null;
                        _OldAttData.StatusLI = null;
                        _OldAttData.StatusLO = null;
                        _OldAttData.StatusDO = null;
                        _OldAttData.StatusGZOT = null;
                        _OldAttData.StatusLeave = null;
                        _OldAttData.StatusMN = true;
                        _OldAttData.ShifMin = _ShiftMins;
                        _OldAttData.Remarks = "";
                        if (NewDutyCode == "G")
                            _OldAttData.StatusGZ = true;
                        else
                            _OldAttData.StatusGZ = false;
                        if (NewDutyCode == "R")
                            _OldAttData.StatusDO = true;
                        else
                            _OldAttData.StatusDO = false;
                        if (_Remarks != "")
                            _OldAttData.Remarks = "[" + _Remarks + "]";
                        _OldAttData.StatusLeave = null;
                        ProcessDailyAttendance(_OldAttData);
                    }
                }
            }
        }
예제 #2
0
        //Work Times calculation controller
        public void ProcessDailyAttendance(AttData _attData)
        {
            try
            {
                AttData attendanceRecord = _attData;
                Emp employee = attendanceRecord.Emp;
                Shift shift = employee.Shift;
                //If TimeIn and TimeOut are not null, then calculate other Atributes
                if (attendanceRecord.TimeIn != null && attendanceRecord.TimeOut != null)
                {
                    //If TimeIn = TimeOut then calculate according to DutyCode
                    if (attendanceRecord.TimeIn == attendanceRecord.TimeOut)
                    {
                        CalculateInEqualToOut(attendanceRecord);
                    }
                    else
                    {
                        if (attendanceRecord.DutyTime == new TimeSpan(0,0,0))
                        {
                            CalculateOpenShiftTimes(attendanceRecord, shift);
                        }
                        else
                        {
                            //if (attendanceRecord.TimeIn.Value.Date.Day == attendanceRecord.TimeOut.Value.Date.Day)
                            //{
                                CalculateShiftTimes(attendanceRecord, shift);
                            //}
                            //else
                            //{
                            //    CalculateOpenShiftTimes(attendanceRecord, shift);
                            //}
                        }
                    }

                }
            }
            catch (Exception ex)
            {
            }

            context.SaveChanges();
            context.Dispose();
        }
예제 #3
0
        public void AddHalfLeaveToAttData(LvApplication lvappl)
        {
            DateTime datetime = new DateTime();
            datetime = lvappl.FromDate;
            string _EmpDate = lvappl.EmpID + datetime.Date.ToString("yyMMdd");
            using (var db = new TAS2013Entities())
            {
                if (db.AttProcesses.Where(aa => aa.ProcessDate == datetime).Count() > 0)
                {
                    AttData _EmpAttData = new AttData();
                    _EmpAttData = db.AttDatas.First(aa => aa.EmpDate == _EmpDate);
                    if (lvappl.LvType == "A")//Casual Leave
                        _EmpAttData.Remarks = _EmpAttData.Remarks+"[H-CL]";
                    if (lvappl.LvType == "B")//Anual Leave
                        _EmpAttData.Remarks = _EmpAttData.Remarks+"[H-AL]";
                    if (lvappl.LvType == "C")//Sick Leave
                        _EmpAttData.Remarks = _EmpAttData.Remarks+"[H-SL]";

                    if (_EmpAttData.Remarks.Contains("[Absent]"))
                        _EmpAttData.Remarks.Replace("[Abesnt]", "");
                    if (_EmpAttData.Remarks.Contains("[EO]"))
                        _EmpAttData.Remarks.Replace("[EO]", "-");
                    if (_EmpAttData.Remarks.Contains("[LI]"))
                        _EmpAttData.Remarks.Replace("[LI]", "");
                    _EmpAttData.StatusLeave = true;
                    if (lvappl.FirstHalf == true)
                    {
                        _EmpAttData.LateIn = 0;
                        _EmpAttData.StatusLI = false;
                    }
                    else
                    {
                        _EmpAttData.StatusEO = false;
                        _EmpAttData.EarlyOut = 0;
                    }
                    //_EmpAttData.statushl

                    db.SaveChanges();
                }
            }
        }
예제 #4
0
 public void AddShortLeaveToAttData(LvShort lvshort)
 {
     DateTime datetime = new DateTime();
     using (var db = new TAS2013Entities())
     {
         if (db.AttProcesses.Where(aa => aa.ProcessDate == datetime).Count() > 0)
         {
             AttData _EmpAttData = new AttData();
             _EmpAttData = db.AttDatas.First(aa => aa.EmpDate == lvshort.EmpDate);
             _EmpAttData.StatusAB = false;
             _EmpAttData.StatusSL = true;
             _EmpAttData.Remarks = _EmpAttData.Remarks + "[Short Leave]";
             db.SaveChanges();
         }
     }
 }
예제 #5
0
 private void MarkAttendanceEditedData(AttData _atData)
 {
     ViewBag.JobCardType = new SelectList(db.JobCards.OrderBy(s=>s.WorkCardName), "WorkCardID", "WorkCardName");
 }
예제 #6
0
        public ActionResult PreviousEntry()
        {
            try
            {
                ViewBag.JobCardType = new SelectList(db.JobCards.OrderBy(s=>s.WorkCardName), "WorkCardID", "WorkCardName");
                ViewData["datef"] = Convert.ToDateTime(Session["EditAttendanceDate"]).ToString("yyyy-MM-dd");
                int _EmpID = Convert.ToInt32(Session["NEmpNo"]);
                if (_EmpID != null)
                {
                    DateTime _AttDataFrom = Convert.ToDateTime(ViewData["datef"].ToString()).AddDays(-1);
                    AttData _attData = new AttData();
                    _attData = db.AttDatas.First(aa => aa.EmpID == _EmpID && aa.AttDate == _AttDataFrom);
                    if (_attData != null)
                    {
                        Session["EditAttendanceDate"] = Convert.ToDateTime(ViewData["datef"]).AddDays(-1);
                        ViewBag.EmpID = new SelectList(db.Emps.OrderBy(s=>s.EmpName), "EmpID", "EmpNo", _attData.EmpID);
                        ViewBag.SucessMessage = "";
                        List<PollData> _Polls = new List<PollData>();
                        string _EmpDate = _attData.EmpID.ToString() + _AttDataFrom.Date.ToString("yyMMdd");
                        _Polls = db.PollDatas.Where(aa => aa.EmpDate == _EmpDate).OrderBy(a => a.EntTime).ToList();
                        ViewBag.PollsDataIn = _Polls.Where(aa => aa.RdrDuty == 1);
                        ViewBag.PollsDataOut = _Polls.Where(aa => aa.RdrDuty == 5);
                        if (_attData.WorkMin != null)
                            ViewBag.WorkMin = (TimeSpan.FromMinutes((double)_attData.WorkMin));
                        if (_attData.LateOut != null)
                            ViewBag.LateOut = TimeSpan.FromMinutes((double)_attData.LateOut);
                        if (_attData.LateIn != null)
                            ViewBag.LateIn = TimeSpan.FromMinutes((double)_attData.LateIn);
                        if (_attData.EarlyOut != null)
                            ViewBag.EarlyOut = TimeSpan.FromMinutes((double)_attData.EarlyOut);
                        if (_attData.EarlyIn != null)
                            ViewBag.EarlyIn = TimeSpan.FromMinutes((double)_attData.EarlyIn);
                        if (_attData.OTMin != null)
                            ViewBag.OT = TimeSpan.FromMinutes((double)_attData.OTMin);
                        if (_attData.StatusGZOT == true)
                            ViewBag.GZOT = TimeSpan.FromMinutes((double)_attData.GZOTMin);
                        return View("EditAttWizardOne", _attData);
                    }
                    else
                        return View("Index");
                }
                else
                    return View("Index");
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Sequence"))
                    ViewBag.Message = "No Entry found on this particular date";
                return View("Index");

            }
        }
예제 #7
0
        public static void CalculateOpenShiftTimes(AttData attendanceRecord, Shift shift)
        {
            try
            {
                //Calculate WorkMin
                if (attendanceRecord != null)
                {
                    if (attendanceRecord.TimeOut != null && attendanceRecord.TimeIn != null)
                    {
                        attendanceRecord.Remarks = "";
                        TimeSpan mins = (TimeSpan)(attendanceRecord.TimeOut - attendanceRecord.TimeIn);
                        //Check if GZ holiday then place all WorkMin in GZOTMin
                        if (attendanceRecord.StatusGZ == true)
                        {
                            attendanceRecord.GZOTMin = (short)mins.TotalMinutes;
                            attendanceRecord.WorkMin = (short)mins.TotalMinutes;
                            attendanceRecord.StatusGZOT = true;
                            attendanceRecord.Remarks = attendanceRecord.Remarks + "[GZ-OT]";
                        }
                        else if (attendanceRecord.StatusDO == true)
                        {
                            attendanceRecord.OTMin = (short)mins.TotalMinutes;
                            attendanceRecord.WorkMin = (short)mins.TotalMinutes;
                            attendanceRecord.StatusOT = true;
                            attendanceRecord.Remarks = attendanceRecord.Remarks + "[R-OT]";
                            // RoundOff Overtime
                            if ((attendanceRecord.Emp.EmpType.CatID == 2 || attendanceRecord.Emp.EmpType.CatID == 4) && attendanceRecord.Emp.CompanyID == 1)
                            {
                                if (attendanceRecord.OTMin > 0)
                                {
                                    float OTmins = (float)attendanceRecord.OTMin;
                                    float remainder = OTmins / 60;
                                    int intpart = (int)remainder;
                                    double fracpart = remainder - intpart;
                                    if (fracpart < 0.5)
                                    {
                                        attendanceRecord.OTMin = (short)(intpart * 60);
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (shift.HasBreak == true)
                            {
                                attendanceRecord.WorkMin = (short)(mins.TotalMinutes - shift.BreakMin);
                                attendanceRecord.ShifMin = (short)(ProcessSupportFunc.CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek) - (short)shift.BreakMin);
                            }
                            else
                            {
                                attendanceRecord.Remarks.Replace("[Absent]", "");
                                attendanceRecord.StatusAB = false;
                                attendanceRecord.StatusP = true;
                                // CalculateShiftEndTime = ShiftStart + DutyHours
                                //TimeSpan shiftEnd = ProcessSupportFunc.CalculateShiftEndTime(shift, attendanceRecord.AttDate.Value.DayOfWeek);
                                attendanceRecord.WorkMin = (short)(mins.TotalMinutes);
                                //Calculate OverTIme,
                                if ((mins.TotalMinutes > (attendanceRecord.ShifMin + shift.OverTimeMin)) && attendanceRecord.Emp.HasOT == true)
                                {
                                    attendanceRecord.OTMin = (Int16)(Convert.ToInt16(mins.TotalMinutes) - attendanceRecord.ShifMin);
                                    attendanceRecord.WorkMin = (short)((mins.TotalMinutes) - attendanceRecord.OTMin);
                                    attendanceRecord.StatusOT = true;
                                    attendanceRecord.Remarks = attendanceRecord.Remarks + "[N-OT]";
                                }
                                //Calculate Early Out
                                if (mins.TotalMinutes < (attendanceRecord.ShifMin - shift.EarlyOut))
                                {
                                    Int16 EarlyoutMin = (Int16)(attendanceRecord.ShifMin - Convert.ToInt16(mins.TotalMinutes));
                                    if (EarlyoutMin > shift.EarlyOut)
                                    {
                                        attendanceRecord.EarlyOut = EarlyoutMin;
                                        attendanceRecord.StatusEO = true;
                                        attendanceRecord.Remarks = attendanceRecord.Remarks + "[EO]";
                                    }
                                    else
                                    {
                                        attendanceRecord.StatusEO = null;
                                        attendanceRecord.EarlyOut = null;
                                        attendanceRecord.Remarks.Replace("[EO]", "");
                                    }
                                }
                                else
                                {
                                    attendanceRecord.StatusEO = null;
                                    attendanceRecord.EarlyOut = null;
                                    attendanceRecord.Remarks.Replace("[EO]", "");
                                }
                                // round off work mins if overtime less than shift.OverTimeMin >
                                if (attendanceRecord.WorkMin > attendanceRecord.ShifMin && (attendanceRecord.WorkMin <= (attendanceRecord.ShifMin + shift.OverTimeMin)))
                                {
                                    attendanceRecord.WorkMin = attendanceRecord.ShifMin;
                                }
                                // RoundOff Overtime
                                if ((attendanceRecord.Emp.EmpType.CatID == 2 || attendanceRecord.Emp.EmpType.CatID == 4) && attendanceRecord.Emp.CompanyID == 1)
                                {
                                    if (attendanceRecord.OTMin > 0)
                                    {
                                        float OTmins = (float)attendanceRecord.OTMin;
                                        float remainder = OTmins / 60;
                                        int intpart = (int)remainder;
                                        double fracpart = remainder - intpart;
                                        if (fracpart < 0.5)
                                        {
                                            attendanceRecord.OTMin = (short)(intpart * 60);
                                        }
                                    }
                                }
                                //Mark Absent if less than 4 hours
                                if (attendanceRecord.AttDate.Value.DayOfWeek != DayOfWeek.Friday && attendanceRecord.StatusDO != true && attendanceRecord.StatusGZ != true)
                                {
                                    short MinShiftMin = (short)shift.MinHrs;
                                    if (attendanceRecord.WorkMin < MinShiftMin)
                                    {
                                        attendanceRecord.StatusAB = true;
                                        attendanceRecord.StatusP = false;
                                        attendanceRecord.Remarks = attendanceRecord.Remarks + "[Absent]";
                                    }
                                    else
                                    {
                                        attendanceRecord.StatusAB = false;
                                        attendanceRecord.StatusP = true;
                                        attendanceRecord.Remarks.Replace("[Absent]", "");
                                    }

                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
예제 #8
0
        private void SaveOldAttData(AttData _OldAttData, int Userid)
        {
            try
            {
                _ManualEditData.OldDutyCode = _OldAttData.DutyCode;
                _ManualEditData.OldTimeIn = _OldAttData.TimeIn;
                _ManualEditData.OldTimeOut = _OldAttData.TimeOut;
                _ManualEditData.EmpDate = _OldAttData.EmpDate;
                _ManualEditData.UserID = Userid;
                _ManualEditData.EditDateTime = DateTime.Now;
                _ManualEditData.EmpID = _OldAttData.EmpID;
                _ManualEditData.OldRemarks = _OldAttData.Remarks;
            }
            catch (Exception ex)
            {

            }
        }
예제 #9
0
 private void CalculateInEqualToOut(AttData attendanceRecord)
 {
     switch (attendanceRecord.DutyCode)
     {
         case "G":
             attendanceRecord.StatusAB = false;
             attendanceRecord.StatusGZ = true;
             attendanceRecord.WorkMin = 0;
             attendanceRecord.EarlyIn = 0;
             attendanceRecord.EarlyOut = 0;
             attendanceRecord.LateIn = 0;
             attendanceRecord.LateOut = 0;
             attendanceRecord.OTMin = 0;
             attendanceRecord.GZOTMin = 0;
             attendanceRecord.StatusGZOT = false;
             attendanceRecord.TimeIn = null;
             attendanceRecord.TimeOut = null;
             attendanceRecord.Remarks = "[GZ][Manual]";
             break;
         case "R":
             attendanceRecord.StatusAB = false;
             attendanceRecord.StatusGZ = false;
             attendanceRecord.WorkMin = 0;
             attendanceRecord.EarlyIn = 0;
             attendanceRecord.EarlyOut = 0;
             attendanceRecord.LateIn = 0;
             attendanceRecord.LateOut = 0;
             attendanceRecord.OTMin = 0;
             attendanceRecord.GZOTMin = 0;
             attendanceRecord.StatusGZOT = false;
             attendanceRecord.TimeIn = null;
             attendanceRecord.TimeOut = null;
             attendanceRecord.StatusDO = true;
             attendanceRecord.Remarks = "[DO][Manual]";
             break;
         case "D":
             attendanceRecord.StatusAB = true;
             attendanceRecord.StatusGZ = false;
             attendanceRecord.WorkMin = 0;
             attendanceRecord.EarlyIn = 0;
             attendanceRecord.EarlyOut = 0;
             attendanceRecord.LateIn = 0;
             attendanceRecord.LateOut = 0;
             attendanceRecord.OTMin = 0;
             attendanceRecord.GZOTMin = 0;
             attendanceRecord.StatusGZOT = false;
             attendanceRecord.TimeIn = null;
             attendanceRecord.TimeOut = null;
             attendanceRecord.StatusDO = false;
             attendanceRecord.StatusP = false;
             attendanceRecord.Remarks = "[Absent][Manual]";
             break;
     }
 }
예제 #10
0
 public static void PlacedSortedInTime(AttData attendanceRecord, List<DateTime> _InTimes)
 {
     for (int i = 0; i < _InTimes.Count; i++)
     {
         switch (i)
         {
             case 0:
                 attendanceRecord.Tin0 = _InTimes[i];
                 attendanceRecord.TimeIn = _InTimes[i];
                 break;
             case 1:
                 attendanceRecord.Tin1 = _InTimes[i];
                 break;
             case 2:
                 attendanceRecord.Tin2 = _InTimes[i];
                 break;
             case 3:
                 attendanceRecord.Tin3 = _InTimes[i];
                 break;
             case 4:
                 attendanceRecord.Tin4 = _InTimes[i];
                 break;
             case 5:
                 attendanceRecord.Tin5 = _InTimes[i];
                 break;
             case 6:
                 attendanceRecord.Tin6 = _InTimes[i];
                 break;
             case 7:
                 attendanceRecord.Tin7 = _InTimes[i];
                 break;
             case 8:
                 attendanceRecord.Tin8 = _InTimes[i];
                 break;
             case 9:
                 attendanceRecord.Tin9 = _InTimes[i];
                 break;
         }
     }
 }
예제 #11
0
 public static void MarkOUTForOpenShift(DateTime _pollTime, AttData _attendanceRecord)
 {
     if (_attendanceRecord.Tout0 == null)
     {
         _attendanceRecord.Tout0 = _pollTime;
         _attendanceRecord.TimeOut = _pollTime;
         SortingOutTime(_attendanceRecord);
     }
     else if (_attendanceRecord.Tout1 == null)
     {
         _attendanceRecord.Tout1 = _pollTime;
         _attendanceRecord.TimeOut = _pollTime;
         SortingOutTime(_attendanceRecord);
     }
     else if (_attendanceRecord.Tout2 == null)
     {
         _attendanceRecord.Tout2 = _pollTime;
         _attendanceRecord.TimeOut = _pollTime;
         SortingOutTime(_attendanceRecord);
     }
     else if (_attendanceRecord.Tout3 == null)
     {
         _attendanceRecord.Tout3 = _pollTime;
         _attendanceRecord.TimeOut = _pollTime;
         SortingOutTime(_attendanceRecord);
     }
     else
     {
         _attendanceRecord.Tout4 = _pollTime;
         _attendanceRecord.TimeOut = _pollTime;
         SortingOutTime(_attendanceRecord);
     }
     //else if (_attendanceRecord.Tout5 == null)
     //{
     //    _attendanceRecord.Tout5 = up.EntTime;
     //    _attendanceRecord.TimeOut = up.EntTime;
     //    SortingOutTime(_attendanceRecord);
     //}
     //else if (_attendanceRecord.Tout6 == null)
     //{
     //    _attendanceRecord.Tout6 = up.EntTime;
     //    _attendanceRecord.TimeOut = up.EntTime;
     //    SortingOutTime(_attendanceRecord);
     //}
     //else if (_attendanceRecord.Tout7 == null)
     //{
     //    _attendanceRecord.Tout7 = up.EntTime;
     //    _attendanceRecord.TimeOut = up.EntTime;
     //    SortingOutTime(_attendanceRecord);
     //}
     //else if (_attendanceRecord.Tout8 == null)
     //{
     //    _attendanceRecord.Tout8 = up.EntTime;
     //    _attendanceRecord.TimeOut = up.EntTime;
     //    SortingOutTime(_attendanceRecord);
     //}
     //else if (_attendanceRecord.Tout9 == null)
     //{
     //    _attendanceRecord.Tout9 = up.EntTime;
     //    _attendanceRecord.TimeOut = up.EntTime;
     //    SortingOutTime(_attendanceRecord);
     //}
     //else if (_attendanceRecord.Tout10 == null)
     //{
     //    _attendanceRecord.Tout10 = up.EntTime;
     //    _attendanceRecord.TimeOut = up.EntTime;
     //    SortingOutTime(_attendanceRecord);
     //}
     //else
     //{
     //    _attendanceRecord.Tout11 = up.EntTime;
     //    _attendanceRecord.TimeOut = up.EntTime;
     //    SortingOutTime(_attendanceRecord);
     //}
 }
예제 #12
0
        public static void CalculateTimeINOUTOpenShift(AttData attendanceRecord, PollData up)
        {
            try
            {
                TAS2013Entities context = new TAS2013Entities();
                switch (up.RdrDuty)
                {
                    case 1: //IN
                        if (attendanceRecord.Tin0 == null)
                        {
                            if (up.EntTime.TimeOfDay < OpenShiftThresholdEnd)
                            {
                                DateTime dt = new DateTime();
                                dt = up.EntDate.Date.AddDays(-1);
                                var _attData = context.AttDatas.FirstOrDefault(aa => aa.AttDate == dt && aa.EmpID == up.EmpID);
                                if (_attData != null)
                                {

                                    if (_attData.TimeIn != null)
                                    {
                                        if (_attData.TimeIn.Value.TimeOfDay > OpenShiftThresholdStart)
                                        {
                                            //attdata - 1 . multipleTimeIn =  up.EntTime

                                        }
                                        else
                                        {
                                            attendanceRecord.Tin0 = up.EntTime;
                                            attendanceRecord.TimeIn = up.EntTime;
                                            attendanceRecord.StatusAB = false;
                                            attendanceRecord.StatusP = true;
                                            attendanceRecord.Remarks = null;
                                            attendanceRecord.StatusIN = true;
                                        }
                                    }
                                    else
                                    {
                                        attendanceRecord.Tin0 = up.EntTime;
                                        attendanceRecord.TimeIn = up.EntTime;
                                        attendanceRecord.StatusAB = false;
                                        attendanceRecord.StatusP = true;
                                        attendanceRecord.Remarks = null;
                                        attendanceRecord.StatusIN = true;
                                    }
                                }
                                else
                                {
                                    attendanceRecord.Tin0 = up.EntTime;
                                    attendanceRecord.TimeIn = up.EntTime;
                                    attendanceRecord.StatusAB = false;
                                    attendanceRecord.StatusP = true;
                                    attendanceRecord.Remarks = null;
                                    attendanceRecord.StatusIN = true;
                                }
                            }
                            else
                            {
                                attendanceRecord.Tin0 = up.EntTime;
                                attendanceRecord.TimeIn = up.EntTime;
                                attendanceRecord.StatusAB = false;
                                attendanceRecord.StatusP = true;
                                attendanceRecord.Remarks = null;
                                attendanceRecord.StatusIN = true;
                            }

                        }
                        else if (attendanceRecord.Tin1 == null)
                        {
                            attendanceRecord.Tin1 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        else if (attendanceRecord.Tin2 == null)
                        {
                            attendanceRecord.Tin2 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        else if (attendanceRecord.Tin3 == null)
                        {
                            attendanceRecord.Tin3 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        else if (attendanceRecord.Tin4 == null)
                        {
                            attendanceRecord.Tin4 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        else if (attendanceRecord.Tin5 == null)
                        {
                            attendanceRecord.Tin5 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        else if (attendanceRecord.Tin6 == null)
                        {
                            attendanceRecord.Tin6 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        else if (attendanceRecord.Tin7 == null)
                        {
                            attendanceRecord.Tin7 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        else if (attendanceRecord.Tin8 == null)
                        {
                            attendanceRecord.Tin8 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        else if (attendanceRecord.Tin9 == null)
                        {
                            attendanceRecord.Tin9 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        else if (attendanceRecord.Tin10 == null)
                        {
                            attendanceRecord.Tin10 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        else
                        {
                            attendanceRecord.Tin11 = up.EntTime;
                            SortingInTime(attendanceRecord);
                        }
                        break;
                    case 5: //OUT
                        if (up.EntTime.TimeOfDay < OpenShiftThresholdEnd)
                        {
                            DateTime dt = up.EntDate.AddDays(-1);
                            if (context.AttDatas.Where(aa => aa.AttDate == dt && aa.EmpID == up.EmpID).Count() > 0)
                            {
                                AttData AttDataOfPreviousDay = context.AttDatas.FirstOrDefault(aa => aa.AttDate == dt && aa.EmpID == up.EmpID);
                                if (AttDataOfPreviousDay.TimeIn != null)
                                {
                                    if (AttDataOfPreviousDay.TimeIn.Value.TimeOfDay > OpenShiftThresholdStart)
                                    {
                                        //AttDate -1, Possible TimeOut = up.entryTime
                                        MarkOUTForOpenShift(up.EntTime, AttDataOfPreviousDay);
                                    }
                                    else
                                    {
                                        // Mark as out of that day
                                        MarkOUTForOpenShift(up.EntTime, attendanceRecord);
                                    }
                                }
                                else
                                    MarkOUTForOpenShift(up.EntTime, attendanceRecord);
                            }
                            else
                            {
                                // Mark as out of that day
                                MarkOUTForOpenShift(up.EntTime, attendanceRecord);
                            }

                        }
                        else
                        {
                            //Mark as out of that day
                            MarkOUTForOpenShift(up.EntTime, attendanceRecord);
                        }
                        //-------------------------------------------------------
                        context.SaveChanges();
                        break;
                }
            }
            catch (Exception ex)
            {
            }
        }
예제 #13
0
 public static void CalculateTimeINOUT(AttData attendanceRecord, PollData up)
 {
     try
     {
         switch (up.RdrDuty)
         {
             case 1: //IN
                 if (attendanceRecord.Tin0 == null)
                 {
                     attendanceRecord.Tin0 = up.EntTime;
                     attendanceRecord.TimeIn = up.EntTime;
                     attendanceRecord.StatusAB = false;
                     attendanceRecord.StatusP = true;
                     attendanceRecord.Remarks = null;
                 }
                 else if (attendanceRecord.Tin1 == null)
                 {
                     attendanceRecord.Tin1 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tin2 == null)
                 {
                     attendanceRecord.Tin2 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tin3 == null)
                 {
                     attendanceRecord.Tin3 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tin4 == null)
                 {
                     attendanceRecord.Tin4 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tin5 == null)
                 {
                     attendanceRecord.Tin5 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tin6 == null)
                 {
                     attendanceRecord.Tin6 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tin7 == null)
                 {
                     attendanceRecord.Tin7 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tin8 == null)
                 {
                     attendanceRecord.Tin8 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tin9 == null)
                 {
                     attendanceRecord.Tin9 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tin10 == null)
                 {
                     attendanceRecord.Tin10 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 else
                 {
                     attendanceRecord.Tin11 = up.EntTime;
                     SortingInTime(attendanceRecord);
                 }
                 break;
             case 5: //OUT
                 if (attendanceRecord.Tout0 == null)
                 {
                     attendanceRecord.Tout0 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tout1 == null)
                 {
                     attendanceRecord.Tout1 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tout2 == null)
                 {
                     attendanceRecord.Tout2 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tout3 == null)
                 {
                     attendanceRecord.Tout3 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tout4 == null)
                 {
                     attendanceRecord.Tout4 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tout5 == null)
                 {
                     attendanceRecord.Tout5 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tout6 == null)
                 {
                     attendanceRecord.Tout6 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tout7 == null)
                 {
                     attendanceRecord.Tout7 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tout8 == null)
                 {
                     attendanceRecord.Tout8 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tout9 == null)
                 {
                     attendanceRecord.Tout9 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else if (attendanceRecord.Tout10 == null)
                 {
                     attendanceRecord.Tout10 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 else
                 {
                     attendanceRecord.Tout11 = up.EntTime;
                     attendanceRecord.TimeOut = up.EntTime;
                     SortingOutTime(attendanceRecord);
                 }
                 break;
             case 8: //DUTY
                 if (attendanceRecord.Tin0 != null)
                 {
                     if (attendanceRecord.Tout0 == null)
                     {
                         attendanceRecord.Tout0 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin1 == null)
                     {
                         attendanceRecord.Tin1 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout1 == null)
                     {
                         attendanceRecord.Tout1 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin2 == null)
                     {
                         attendanceRecord.Tin2 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout2 == null)
                     {
                         attendanceRecord.Tout2 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin3 == null)
                     {
                         attendanceRecord.Tin3 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout3 == null)
                     {
                         attendanceRecord.Tout3 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin4 == null)
                     {
                         attendanceRecord.Tin4 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout4 == null)
                     {
                         attendanceRecord.Tout4 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin5 == null)
                     {
                         attendanceRecord.Tin5 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout5 == null)
                     {
                         attendanceRecord.Tout5 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin6 == null)
                     {
                         attendanceRecord.Tin6 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout6 == null)
                     {
                         attendanceRecord.Tout6 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     //
                     else if (attendanceRecord.Tin7 == null)
                     {
                         attendanceRecord.Tin7 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout7 == null)
                     {
                         attendanceRecord.Tout7 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin8 == null)
                     {
                         attendanceRecord.Tin8 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout8 == null)
                     {
                         attendanceRecord.Tout8 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin9 == null)
                     {
                         attendanceRecord.Tin9 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout9 == null)
                     {
                         attendanceRecord.Tout9 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin10 == null)
                     {
                         attendanceRecord.Tin10 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout10 == null)
                     {
                         attendanceRecord.Tout10 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin11 == null)
                     {
                         attendanceRecord.Tin11 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout11 == null)
                     {
                         attendanceRecord.Tout11 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin12 == null)
                     {
                         attendanceRecord.Tin12 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tout12 == null)
                     {
                         attendanceRecord.Tout12 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else if (attendanceRecord.Tin13 == null)
                     {
                         attendanceRecord.Tin13 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                     else
                     {
                         attendanceRecord.Tout13 = up.EntTime;
                         attendanceRecord.TimeOut = up.EntTime;
                     }
                 }
                 else
                 {
                     attendanceRecord.Tin0 = up.EntTime;
                     attendanceRecord.TimeIn = up.EntTime;
                     attendanceRecord.StatusAB = false;
                     attendanceRecord.StatusP = true;
                     attendanceRecord.Remarks = null;
                 }
                 break;
         }
     }
     catch (Exception ex)
     {
     }
 }
예제 #14
0
 public void AddShortLeaveToAttData(LvShort lvshort)
 {
     DateTime datetime = new DateTime();
     using (var db = new TAS2013Entities())
     {
         if (db.AttDatas.Where(aa => aa.EmpDate== lvshort.EmpDate).Count() > 0)
         {
             AttData _EmpAttData = new AttData();
             _EmpAttData = db.AttDatas.First(aa => aa.EmpDate == lvshort.EmpDate);
             _EmpAttData.StatusAB = false;
             _EmpAttData.StatusSL = true;
             _EmpAttData.ShifMin = (short)(_EmpAttData.ShifMin - lvshort.THour.Value.TotalMinutes);
             if (_EmpAttData.WorkMin !=null)
             {
                 if (_EmpAttData.WorkMin >0)
                 {
                     if ((_EmpAttData.WorkMin + lvshort.THour.Value.TotalMinutes) >=
                         ProcessSupportFunc.CalculateShiftMinutes(_EmpAttData.Emp.Shift, lvshort.DutyDate.Value.DayOfWeek))
                     {
                         _EmpAttData.StatusLI = false;
                         _EmpAttData.StatusEO = false;
                         _EmpAttData.Remarks= _EmpAttData.Remarks.Replace("[LI]", "");
                         _EmpAttData.Remarks = _EmpAttData.Remarks.Replace("[EO]", "");
                         _EmpAttData.LateIn = 0;
                         _EmpAttData.EarlyOut = 0;
                     }
                 }
             }
             _EmpAttData.Remarks = _EmpAttData.Remarks + "[Short Leave]";
             db.SaveChanges();
         }
     }
 }
예제 #15
0
        public static void CalculateShiftTimes(AttData attendanceRecord, Shift shift)
        {
            try
            {
                //Calculate WorkMin
                attendanceRecord.Remarks = "";
                TimeSpan mins = (TimeSpan)(attendanceRecord.TimeOut - attendanceRecord.TimeIn);
                //Check if GZ holiday then place all WorkMin in GZOTMin
                if (attendanceRecord.StatusGZ == true)
                {
                    attendanceRecord.GZOTMin = (short)mins.TotalMinutes;
                    attendanceRecord.WorkMin = (short)mins.TotalMinutes;
                    attendanceRecord.StatusGZOT = true;
                    attendanceRecord.Remarks = attendanceRecord.Remarks + "[G-OT]";
                }
                //if Rest day then place all WorkMin in OTMin
                else if (attendanceRecord.StatusDO == true)
                {
                    if (attendanceRecord.Emp.HasOT != false)
                    {
                        attendanceRecord.OTMin = (short)mins.TotalMinutes;
                        attendanceRecord.WorkMin = (short)mins.TotalMinutes;
                        attendanceRecord.StatusOT = true;
                        attendanceRecord.Remarks = attendanceRecord.Remarks + "[R-OT]";
                        // RoundOff Overtime
                        if ((attendanceRecord.Emp.EmpType.CatID == 2 || attendanceRecord.Emp.EmpType.CatID == 4) && attendanceRecord.Emp.CompanyID == 1)
                        {
                            if (attendanceRecord.OTMin > 0)
                            {
                                float OTmins = (float)attendanceRecord.OTMin;
                                float remainder = OTmins / 60;
                                int intpart = (int)remainder;
                                double fracpart = remainder - intpart;
                                if (fracpart < 0.5)
                                {
                                    attendanceRecord.OTMin = (short)(intpart * 60);
                                }
                            }
                        }
                    }
                }
                else
                {
                    /////////// to-do -----calculate Margins for those shifts which has break mins
                    if (shift.HasBreak == true)
                    {
                        attendanceRecord.WorkMin = (short)(mins.TotalMinutes - shift.BreakMin);
                        attendanceRecord.ShifMin = (short)(ProcessSupportFunc.CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek) - (short)shift.BreakMin);
                    }
                    else
                    {
                        attendanceRecord.Remarks.Replace("[Absent]", "");
                        attendanceRecord.StatusAB = false;
                        attendanceRecord.StatusP = true;
                        //Calculate Late IN, Compare margin with Shift Late In
                        if (attendanceRecord.TimeIn.Value.TimeOfDay > attendanceRecord.DutyTime)
                        {
                            TimeSpan lateMinsSpan = (TimeSpan)(attendanceRecord.TimeIn.Value.TimeOfDay - attendanceRecord.DutyTime);
                            if (lateMinsSpan.TotalMinutes > shift.LateIn)
                            {
                                attendanceRecord.LateIn = (short)lateMinsSpan.TotalMinutes;
                                attendanceRecord.StatusLI = true;
                                attendanceRecord.EarlyIn = null;
                                attendanceRecord.Remarks = attendanceRecord.Remarks + "[LI]";
                            }
                            else
                            {
                                attendanceRecord.StatusLI = null;
                                attendanceRecord.LateIn = null;
                                attendanceRecord.Remarks.Replace("[LI]", "");
                            }
                        }
                        else
                        {
                            attendanceRecord.StatusLI = null;
                            attendanceRecord.LateIn = null;
                            attendanceRecord.Remarks.Replace("[LI]", "");
                        }

                        //Calculate Early In, Compare margin with Shift Early In
                        if (attendanceRecord.TimeIn.Value.TimeOfDay < attendanceRecord.DutyTime)
                        {
                            TimeSpan EarlyInMinsSpan = (TimeSpan)(attendanceRecord.DutyTime - attendanceRecord.TimeIn.Value.TimeOfDay);
                            if (EarlyInMinsSpan.TotalMinutes > shift.EarlyIn)
                            {
                                attendanceRecord.EarlyIn = (short)EarlyInMinsSpan.TotalMinutes;
                                attendanceRecord.StatusEI = true;
                                attendanceRecord.LateIn = null;
                                attendanceRecord.Remarks = attendanceRecord.Remarks + "[EI]";
                            }
                            else
                            {
                                attendanceRecord.StatusEI = null;
                                attendanceRecord.EarlyIn = null;
                                attendanceRecord.Remarks.Replace("[EI]", "");
                            }
                        }
                        else
                        {
                            attendanceRecord.StatusEI = null;
                            attendanceRecord.EarlyIn = null;
                            attendanceRecord.Remarks.Replace("[EI]", "");
                        }

                        // CalculateShiftEndTime = ShiftStart + DutyHours
                        DateTime shiftEnd = ProcessSupportFunc.CalculateShiftEndTimeWithAttData(attendanceRecord.AttDate.Value, attendanceRecord.DutyTime.Value, attendanceRecord.ShifMin);

                        //Calculate Early Out, Compare margin with Shift Early Out
                        if (attendanceRecord.TimeOut < shiftEnd)
                        {
                            TimeSpan EarlyOutMinsSpan = (TimeSpan)(shiftEnd - attendanceRecord.TimeOut);
                            if (EarlyOutMinsSpan.TotalMinutes > shift.EarlyOut)
                            {
                                attendanceRecord.EarlyOut = (short)EarlyOutMinsSpan.TotalMinutes;
                                attendanceRecord.StatusEO = true;
                                attendanceRecord.LateOut = null;
                                attendanceRecord.Remarks = attendanceRecord.Remarks + "[EO]";
                            }
                            else
                            {
                                attendanceRecord.StatusEO = null;
                                attendanceRecord.EarlyOut = null;
                                attendanceRecord.Remarks.Replace("[EO]", "");
                            }
                        }
                        else
                        {
                            attendanceRecord.StatusEO = null;
                            attendanceRecord.EarlyOut = null;
                            attendanceRecord.Remarks.Replace("[EO]", "");
                        }
                        //Calculate Late Out, Compare margin with Shift Late Out
                        if (attendanceRecord.TimeOut > shiftEnd)
                        {
                            TimeSpan LateOutMinsSpan = (TimeSpan)(attendanceRecord.TimeOut - shiftEnd);
                            if (LateOutMinsSpan.TotalMinutes > shift.LateOut)
                            {
                                attendanceRecord.LateOut = (short)LateOutMinsSpan.TotalMinutes;
                                // Late Out cannot have an early out, In case of poll at multiple times before and after shiftend
                                attendanceRecord.EarlyOut = null;
                                attendanceRecord.StatusLO = true;
                                attendanceRecord.Remarks = attendanceRecord.Remarks + "[LO]";
                            }
                            else
                            {
                                attendanceRecord.StatusLO = null;
                                attendanceRecord.LateOut = null;
                                attendanceRecord.Remarks.Replace("[LO]", "");
                            }
                        }
                        else
                        {
                            attendanceRecord.StatusLO = null;
                            attendanceRecord.LateOut = null;
                            attendanceRecord.Remarks.Replace("[LO]", "");
                        }

                        //Subtract EarlyIn and LateOut from Work Minutes
                        //////-------to-do--------- Automate earlyin,lateout from shift setup
                        attendanceRecord.WorkMin = (short)(mins.TotalMinutes);
                        if (attendanceRecord.EarlyIn != null && attendanceRecord.EarlyIn > shift.EarlyIn)
                        {
                            attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.EarlyIn);
                        }
                        if (attendanceRecord.LateOut != null && attendanceRecord.LateOut > shift.LateOut)
                        {
                            attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.LateOut);
                        }
                        if (attendanceRecord.LateOut != null || attendanceRecord.EarlyIn != null)

                            // round off work mins if overtime less than shift.OverTimeMin >
                            if (attendanceRecord.WorkMin > attendanceRecord.ShifMin && (attendanceRecord.WorkMin <= (attendanceRecord.ShifMin + shift.OverTimeMin)))
                            {
                                attendanceRecord.WorkMin = attendanceRecord.ShifMin;
                            }
                        //Calculate OverTime = OT, Compare margin with Shift OverTime
                        //----to-do----- Handle from shift
                        //if (attendanceRecord.EarlyIn > shift.EarlyIn || attendanceRecord.LateOut > shift.LateOut)
                        //{
                        //    if (attendanceRecord.StatusGZ != true || attendanceRecord.StatusDO != true)
                        //    {
                        //        short _EarlyIn;
                        //        short _LateOut;
                        //        if (attendanceRecord.EarlyIn == null)
                        //            _EarlyIn = 0;
                        //        else
                        //            _EarlyIn = 0;

                        //        if (attendanceRecord.LateOut == null)
                        //            _LateOut = 0;
                        //        else
                        //            _LateOut = (short)attendanceRecord.LateOut;

                        //        attendanceRecord.OTMin = (short)(_EarlyIn + _LateOut);
                        //        attendanceRecord.StatusOT = true;
                        //        attendanceRecord.Remarks = attendanceRecord.Remarks + "[N-OT]";
                        //    }
                        //}
                        if ((attendanceRecord.StatusGZ != true || attendanceRecord.StatusDO != true) && attendanceRecord.Emp.HasOT == true)
                        {
                            if (attendanceRecord.LateOut != null)
                            {
                                attendanceRecord.OTMin = attendanceRecord.LateOut;
                                attendanceRecord.StatusOT = true;
                                attendanceRecord.Remarks = attendanceRecord.Remarks + "[N-OT]";
                            }
                        }
                        // RoundOff Overtime
                        //if ((attendanceRecord.Emp.EmpType.CatID == 2 || attendanceRecord.Emp.EmpType.CatID == 4) && attendanceRecord.Emp.CompanyID == 1)
                        //{
                        //    if (attendanceRecord.OTMin > 0)
                        //    {
                        //        float OTmins = (float)attendanceRecord.OTMin;
                        //        float remainder = OTmins / 60;
                        //        int intpart = (int)remainder;
                        //        double fracpart = remainder - intpart;
                        //        if (fracpart < 0.5)
                        //        {
                        //            attendanceRecord.OTMin = (short)(intpart * 60);
                        //        }
                        //    }
                        //}
                        //Mark Absent if less than 4 hours
                        if (attendanceRecord.AttDate.Value.DayOfWeek != DayOfWeek.Friday && attendanceRecord.StatusDO != true && attendanceRecord.StatusGZ != true)
                        {
                            short MinShiftMin = (short)shift.MinHrs;
                            if (attendanceRecord.WorkMin < MinShiftMin)
                            {
                                attendanceRecord.StatusAB = true;
                                attendanceRecord.StatusP = false;
                                attendanceRecord.Remarks = "[Absent]";
                            }
                            else
                            {
                                attendanceRecord.StatusAB = false;
                                attendanceRecord.StatusP = true;
                                attendanceRecord.Remarks.Replace("[Absent]", "");
                            }

                        }
                    }
                }
            }
            catch (Exception ex)
            {

            }
        }
예제 #16
0
        public static void CalculateRosterTimes(AttData attendanceRecord, Roster roster, Shift _shift)
        {
            try
            {
                TimeSpan mins = (TimeSpan)(attendanceRecord.TimeOut - attendanceRecord.TimeIn);
                attendanceRecord.Remarks = "";
                if (attendanceRecord.StatusGZ == true)
                {
                    attendanceRecord.GZOTMin = (short)mins.TotalMinutes;
                    attendanceRecord.WorkMin = (short)mins.TotalMinutes;
                    attendanceRecord.StatusGZOT = true;
                    attendanceRecord.Remarks = attendanceRecord.Remarks + "[GZ-OT]";
                }
                else if (attendanceRecord.StatusDO == true)
                {
                    attendanceRecord.OTMin = (short)mins.TotalMinutes;
                    attendanceRecord.WorkMin = (short)mins.TotalMinutes;
                    attendanceRecord.StatusOT = true;
                    attendanceRecord.Remarks = attendanceRecord.Remarks + "[R-OT]";
                    // RoundOff Overtime
                    if ((attendanceRecord.Emp.EmpType.CatID == 2 || attendanceRecord.Emp.EmpType.CatID == 4) && attendanceRecord.Emp.CompanyID == 1)
                    {
                        if (attendanceRecord.OTMin > 0)
                        {
                            float OTmins = (float)attendanceRecord.OTMin;
                            float remainder = OTmins / 60;
                            int intpart = (int)remainder;
                            double fracpart = remainder - intpart;
                            if (fracpart < 0.5)
                            {
                                attendanceRecord.OTMin = (short)(intpart * 60);
                            }
                        }
                    }
                }
                else
                {
                    attendanceRecord.Remarks.Replace("[Absent]", "");
                    attendanceRecord.StatusAB = false;
                    attendanceRecord.StatusP = true;
                    ////------to-do ----------handle shift break time
                    //Calculate Late IN, Compare margin with Shift Late In
                    if (attendanceRecord.TimeIn.Value.TimeOfDay > roster.DutyTime)
                    {
                        TimeSpan lateMinsSpan = (TimeSpan)(attendanceRecord.TimeIn.Value.TimeOfDay - attendanceRecord.DutyTime);
                        if (lateMinsSpan.TotalMinutes > _shift.LateIn)
                        {
                            attendanceRecord.LateIn = (short)lateMinsSpan.TotalMinutes;
                            attendanceRecord.StatusLI = true;
                            attendanceRecord.EarlyIn = null;
                            attendanceRecord.Remarks = attendanceRecord.Remarks + "[LI]";
                        }
                        else
                        {
                            attendanceRecord.LateIn = null;
                            attendanceRecord.StatusLI = null;
                            attendanceRecord.Remarks.Replace("[LI]", "");
                        }
                    }
                    else
                    {
                        attendanceRecord.LateIn = null;
                        attendanceRecord.StatusLI = null;
                        attendanceRecord.Remarks.Replace("[LI]", "");
                    }

                    //Calculate Early In, Compare margin with Shift Early In
                    if (attendanceRecord.TimeIn.Value.TimeOfDay < attendanceRecord.DutyTime)
                    {
                        TimeSpan EarlyInMinsSpan = (TimeSpan)(attendanceRecord.DutyTime - attendanceRecord.TimeIn.Value.TimeOfDay);
                        if (EarlyInMinsSpan.TotalMinutes > _shift.EarlyIn)
                        {
                            attendanceRecord.EarlyIn = (short)EarlyInMinsSpan.TotalMinutes;
                            attendanceRecord.StatusEI = true;
                            attendanceRecord.LateIn = null;
                            attendanceRecord.Remarks = attendanceRecord.Remarks + "[EI]";
                        }
                        else
                        {
                            attendanceRecord.StatusEI = null;
                            attendanceRecord.EarlyIn = null;
                            attendanceRecord.Remarks.Replace("[EI]", "");
                        }
                    }
                    else
                    {
                        attendanceRecord.StatusEI = null;
                        attendanceRecord.EarlyIn = null;
                        attendanceRecord.Remarks.Replace("[EI]", "");
                    }

                    // CalculateShiftEndTime = ShiftStart + DutyHours
                    TimeSpan shiftEnd = (TimeSpan)attendanceRecord.DutyTime + (new TimeSpan(0, (int)roster.WorkMin, 0));

                    //Calculate Early Out, Compare margin with Shift Early Out
                    if (attendanceRecord.TimeOut.Value.TimeOfDay < shiftEnd)
                    {
                        TimeSpan EarlyOutMinsSpan = (TimeSpan)(shiftEnd - attendanceRecord.TimeOut.Value.TimeOfDay);
                        if (EarlyOutMinsSpan.TotalMinutes > _shift.EarlyOut)
                        {
                            attendanceRecord.EarlyOut = (short)EarlyOutMinsSpan.TotalMinutes;
                            attendanceRecord.StatusEO = true;
                            attendanceRecord.LateOut = null;
                            attendanceRecord.Remarks = attendanceRecord.Remarks + "[EO]";
                        }
                        else
                        {
                            attendanceRecord.StatusEO = null;
                            attendanceRecord.EarlyOut = null;
                            attendanceRecord.Remarks.Replace("[EO]", "");
                        }
                    }
                    else
                    {
                        attendanceRecord.StatusEO = null;
                        attendanceRecord.EarlyOut = null;
                        attendanceRecord.Remarks.Replace("[EO]", "");
                    }
                    //Calculate Late Out, Compare margin with Shift Late Out
                    if (attendanceRecord.TimeOut.Value.TimeOfDay > shiftEnd)
                    {
                        TimeSpan LateOutMinsSpan = (TimeSpan)(attendanceRecord.TimeOut.Value.TimeOfDay - shiftEnd);
                        if (LateOutMinsSpan.TotalMinutes > _shift.LateOut)
                        {
                            attendanceRecord.LateOut = (short)LateOutMinsSpan.TotalMinutes;
                            // Late Out cannot have an early out, In case of poll at multiple times before and after shiftend
                            attendanceRecord.EarlyOut = null;
                            attendanceRecord.StatusLO = true;
                            attendanceRecord.Remarks = attendanceRecord.Remarks + "[LO]";
                        }
                        else
                        {
                            attendanceRecord.LateOut = null;
                            attendanceRecord.LateOut = null;
                            attendanceRecord.Remarks.Replace("[LO]", "");
                        }
                    }
                    else
                    {
                        attendanceRecord.LateOut = null;
                        attendanceRecord.LateOut = null;
                        attendanceRecord.Remarks.Replace("[LO]", "");
                    }
                    attendanceRecord.WorkMin = (short)(mins.TotalMinutes);
                    if (attendanceRecord.EarlyIn != null && attendanceRecord.EarlyIn > _shift.EarlyIn)
                    {
                        attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.EarlyIn);
                    }
                    if (attendanceRecord.LateOut != null && attendanceRecord.LateOut > _shift.LateOut)
                    {
                        attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.LateOut);
                    }
                    if (attendanceRecord.EarlyIn == null && attendanceRecord.LateOut == null)
                    {

                    }
                    //round off work minutes
                    if (attendanceRecord.WorkMin > attendanceRecord.ShifMin && (attendanceRecord.WorkMin <= (attendanceRecord.ShifMin + _shift.OverTimeMin)))
                    {
                        attendanceRecord.WorkMin = attendanceRecord.ShifMin;
                    }
                    // RoundOff Overtime
                    if ((attendanceRecord.Emp.EmpType.CatID == 2 || attendanceRecord.Emp.EmpType.CatID == 4) && attendanceRecord.Emp.CompanyID == 1)
                    {
                        if (attendanceRecord.OTMin > 0)
                        {
                            float OTmins = (float)attendanceRecord.OTMin;
                            float remainder = OTmins / 60;
                            int intpart = (int)remainder;
                            double fracpart = remainder - intpart;
                            if (fracpart < 0.5)
                            {
                                attendanceRecord.OTMin = (short)(intpart * 60);
                            }
                        }
                    }
                    ////Calculate OverTime, Compare margin with Shift OverTime
                    //if (attendanceRecord.EarlyIn > _shift.EarlyIn || attendanceRecord.LateOut > _shift.LateOut)
                    //{
                    //    if (attendanceRecord.StatusGZ != true || attendanceRecord.StatusDO != true)
                    //    {
                    //        short _EarlyIn;
                    //        short _LateOut;
                    //        if (attendanceRecord.EarlyIn == null)
                    //            _EarlyIn = 0;
                    //        else
                    //            _EarlyIn = 0;

                    //        if (attendanceRecord.LateOut == null)
                    //            _LateOut = 0;
                    //        else
                    //            _LateOut = (short)attendanceRecord.LateOut;

                    //        attendanceRecord.OTMin = (short)(_EarlyIn + _LateOut);
                    //        attendanceRecord.StatusOT = true;
                    //    }
                    //}
                    if ((attendanceRecord.StatusGZ != true || attendanceRecord.StatusDO != true) && attendanceRecord.Emp.HasOT == true)
                    {
                        if (attendanceRecord.LateOut != null)
                        {
                            attendanceRecord.OTMin = attendanceRecord.LateOut;
                            attendanceRecord.StatusOT = true;
                            attendanceRecord.Remarks = attendanceRecord.Remarks + "[N-OT]";
                        }
                    }
                    //Mark Absent if less than 4 hours
                    if (attendanceRecord.AttDate.Value.DayOfWeek != DayOfWeek.Friday && attendanceRecord.StatusDO != true && attendanceRecord.StatusGZ != true)
                    {
                        short MinShiftMin = (short)_shift.MinHrs;
                        if (attendanceRecord.WorkMin < MinShiftMin)
                        {
                            attendanceRecord.StatusAB = true;
                            attendanceRecord.StatusP = false;
                            attendanceRecord.Remarks = attendanceRecord.Remarks + "[Absent]";
                        }
                        else
                        {
                            attendanceRecord.StatusAB = false;
                            attendanceRecord.StatusP = true;
                            attendanceRecord.Remarks.Replace("[Absent]", "");
                        }

                    }
                }

            }
            catch (Exception ex)
            {
            }
        }
예제 #17
0
 public bool AddLeaveToLeaveAttData(LvApplication lvappl)
 {
     try
     {
         DateTime datetime = new DateTime();
         datetime = lvappl.FromDate;
         for (int i = 0; i < lvappl.NoOfDays; i++)
         {
             string _EmpDate = lvappl.EmpID + datetime.Date.ToString("yyMMdd");
             using (var context = new TAS2013Entities())
             {
                 if (context.AttProcesses.Where(aa => aa.ProcessDate == datetime).Count() > 0)
                 {
                     AttData _EmpAttData = new AttData();
                     _EmpAttData = context.AttDatas.First(aa => aa.EmpDate == _EmpDate);
                     _EmpAttData.TimeIn = null;
                     _EmpAttData.TimeOut = null;
                     _EmpAttData.WorkMin = null;
                     _EmpAttData.LateIn = null;
                     _EmpAttData.LateOut = null;
                     _EmpAttData.EarlyIn = null;
                     _EmpAttData.EarlyOut = null;
                     _EmpAttData.StatusAB= false;
                     _EmpAttData.StatusLeave = true;
                     _EmpAttData.StatusEI = null;
                     _EmpAttData.StatusEO = null;
                     _EmpAttData.StatusLI = null;
                     _EmpAttData.StatusLI= null;
                     _EmpAttData.StatusLO = null;
                     _EmpAttData.StatusDO = null;
                         _EmpAttData.StatusGZ = null;
                     _EmpAttData.StatusGZOT = null;
                     _EmpAttData.StatusMN = null;
                     _EmpAttData.StatusOD = null;
                     if (lvappl.LvType == "A")//Casual Leave
                         _EmpAttData.Remarks = "[CL]";
                     if (lvappl.LvType == "B")//Anual Leave
                         _EmpAttData.Remarks = "[AL]";
                     if (lvappl.LvType == "C")//Sick Leave
                         _EmpAttData.Remarks = "[SL]";
                     _EmpAttData.StatusAB = false;
                     _EmpAttData.StatusLeave = true;
                     context.SaveChanges();
                 }
             }
             datetime = datetime.AddDays(1);
         }
     }
     catch (Exception  ex)
     {
         return false;
     }
     return true;
 }
예제 #18
0
 public static void PlacedSortedOutTime(AttData attendanceRecord, List<DateTime> _OutTimes)
 {
     for (int i = 0; i < _OutTimes.Count; i++)
     {
         switch (i)
         {
             case 0:
                 attendanceRecord.Tout0 = _OutTimes[i];
                 attendanceRecord.TimeOut = _OutTimes[i];
                 break;
             case 1:
                 attendanceRecord.Tout1 = _OutTimes[i];
                 attendanceRecord.TimeOut = _OutTimes[i];
                 break;
             case 2:
                 attendanceRecord.Tout2 = _OutTimes[i];
                 attendanceRecord.TimeOut = _OutTimes[i];
                 break;
             case 3:
                 attendanceRecord.Tout3 = _OutTimes[i];
                 attendanceRecord.TimeOut = _OutTimes[i];
                 break;
             case 4:
                 attendanceRecord.Tout4 = _OutTimes[i];
                 attendanceRecord.TimeOut = _OutTimes[i];
                 break;
             case 5:
                 attendanceRecord.Tout5 = _OutTimes[i];
                 attendanceRecord.TimeOut = _OutTimes[i];
                 break;
             case 6:
                 attendanceRecord.Tout6 = _OutTimes[i];
                 attendanceRecord.TimeOut = _OutTimes[i];
                 break;
             case 7:
                 attendanceRecord.Tout7 = _OutTimes[i];
                 attendanceRecord.TimeOut = _OutTimes[i];
                 break;
             case 8:
                 attendanceRecord.Tout8 = _OutTimes[i];
                 attendanceRecord.TimeOut = _OutTimes[i];
                 break;
             case 9:
                 attendanceRecord.Tout9 = _OutTimes[i];
                 attendanceRecord.TimeOut = _OutTimes[i];
                 break;
         }
     }
 }
예제 #19
0
 private void CalculateOpenShiftTimes(AttData attendanceRecord, Shift shift)
 {
     try
     {
         //Calculate WorkMin
         if (attendanceRecord != null)
         {
             if (attendanceRecord.TimeOut != null && attendanceRecord.TimeIn != null)
             {
                 attendanceRecord.Remarks = "";
                 TimeSpan mins = (TimeSpan)(attendanceRecord.TimeOut - attendanceRecord.TimeIn);
                 //Check if GZ holiday then place all WorkMin in GZOTMin
                 if (attendanceRecord.StatusGZ == true)
                 {
                     attendanceRecord.GZOTMin = (short)mins.TotalMinutes;
                     attendanceRecord.WorkMin = (short)mins.TotalMinutes;
                     attendanceRecord.StatusGZOT = true;
                     attendanceRecord.Remarks = attendanceRecord.Remarks + "[GZ-OT]";
                 }
                 else if (attendanceRecord.StatusDO == true)
                 {
                     attendanceRecord.OTMin = (short)mins.TotalMinutes;
                     attendanceRecord.WorkMin = (short)mins.TotalMinutes;
                     attendanceRecord.StatusOT = true;
                     attendanceRecord.Remarks = attendanceRecord.Remarks + "[R-OT]";
                 }
                 else
                 {
                     if (shift.HasBreak == true)
                     {
                         attendanceRecord.WorkMin = (short)(mins.TotalMinutes - shift.BreakMin);
                         attendanceRecord.ShifMin = (short)(CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek) - (short)shift.BreakMin);
                     }
                     else
                     {
                         // CalculateShiftEndTime = ShiftStart + DutyHours
                         TimeSpan shiftEnd = CalculateShiftEndTime(shift,(short)attendanceRecord.ShifMin);
                         attendanceRecord.WorkMin = (short)(mins.TotalMinutes);
                         //Calculate OverTIme,
                         if (mins.TotalMinutes > (CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek) + shift.OverTimeMin))
                         {
                             attendanceRecord.OTMin = (Int16)(Convert.ToInt16(mins.TotalMinutes) - CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek));
                             attendanceRecord.WorkMin = (short)((mins.TotalMinutes) - attendanceRecord.OTMin);
                             attendanceRecord.StatusOT = true;
                             attendanceRecord.Remarks = attendanceRecord.Remarks + "[N-OT]";
                         }
                         //Calculate Early Out
                         if (mins.TotalMinutes < (CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek) - shift.EarlyOut))
                         {
                             Int16 EarlyoutMin = (Int16)(CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek)-Convert.ToInt16(mins.TotalMinutes) );
                             if (EarlyoutMin > shift.EarlyOut)
                             {
                                 attendanceRecord.EarlyOut = EarlyoutMin;
                                 attendanceRecord.StatusEO = true;
                                 attendanceRecord.Remarks = attendanceRecord.Remarks + "[EO]";
                             }
                         }
                         // round off work mins if overtime less than shift.OverTimeMin >
                         if (attendanceRecord.WorkMin > CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek) && (attendanceRecord.WorkMin <= (CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek) + shift.OverTimeMin)))
                         {
                             attendanceRecord.WorkMin = CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek);
                         }
                         //Mark Absent if less than 4 hours
                         if (attendanceRecord.AttDate.Value.DayOfWeek != DayOfWeek.Friday)
                         {
                             if (attendanceRecord.DutyCode == "D")
                             {
                                 short MinShiftMin = (short)shift.MinHrs;
                                 if (attendanceRecord.WorkMin < MinShiftMin)
                                 {
                                     attendanceRecord.StatusAB = true;
                                     attendanceRecord.StatusP = false;
                                     attendanceRecord.Remarks = attendanceRecord.Remarks + "[Absent]";
                                     attendanceRecord.Remarks.Replace("[LI]", "");
                                     attendanceRecord.Remarks.Replace("[EI]", "");
                                     attendanceRecord.Remarks.Replace("[EO]", "");
                                     attendanceRecord.Remarks.Replace("[LO]", "");
                                 }
                                 else
                                 {
                                     attendanceRecord.StatusAB = false;
                                     attendanceRecord.StatusP = true;
                                     attendanceRecord.Remarks.Replace("[Absent]", "");
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
     }
 }
예제 #20
0
        // Sorting Time In
        public static void SortingInTime(AttData attendanceRecord)
        {
            List<DateTime> _InTimes = new List<DateTime>();

            if (attendanceRecord.Tin0 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin0);
            if (attendanceRecord.Tin1 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin1);
            if (attendanceRecord.Tin2 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin2);
            if (attendanceRecord.Tin3 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin3);
            if (attendanceRecord.Tin4 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin4);
            if (attendanceRecord.Tin5 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin5);
            if (attendanceRecord.Tin6 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin6);
            if (attendanceRecord.Tin7 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin7);
            if (attendanceRecord.Tin8 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin8);
            if (attendanceRecord.Tin9 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin9);
            if (attendanceRecord.Tin10 != null)
                _InTimes.Add((DateTime)attendanceRecord.Tin10);

            var list = _InTimes.OrderBy(x => x.TimeOfDay.Hours).ToList();
            PlacedSortedInTime(attendanceRecord, list);
        }
예제 #21
0
        private void CalculateShiftTimes(AttData attendanceRecord, Shift shift)
        {
            try
            {
                //Calculate WorkMin
                attendanceRecord.Remarks.Replace("[LI]", "");
                attendanceRecord.Remarks.Replace("[EI]", "");
                attendanceRecord.Remarks.Replace("[EO]", "");
                attendanceRecord.Remarks.Replace("[LO]", "");
                attendanceRecord.Remarks.Replace("[G-OT]", "");
                attendanceRecord.Remarks.Replace("[R-OT]", "");
                attendanceRecord.Remarks.Replace("[N-OT]", "");
                attendanceRecord.Remarks.Replace("[Manual]", "");
                attendanceRecord.Remarks = attendanceRecord.Remarks + "[Manual]";
                //attendanceRecord.Remarks = "";
                TimeSpan mins = (TimeSpan)(attendanceRecord.TimeOut - attendanceRecord.TimeIn);
                //Check if GZ holiday then place all WorkMin in GZOTMin
                if (attendanceRecord.StatusGZ == true)
                {
                    attendanceRecord.GZOTMin = (short)mins.TotalMinutes;
                    attendanceRecord.WorkMin = (short)mins.TotalMinutes;
                    attendanceRecord.StatusGZOT = true;
                    attendanceRecord.Remarks = attendanceRecord.Remarks + "[G-OT]";
                }
                //if Rest day then place all WorkMin in OTMin
                else if (attendanceRecord.StatusDO == true)
                {
                    attendanceRecord.OTMin = (short)mins.TotalMinutes;
                    attendanceRecord.WorkMin = (short)mins.TotalMinutes;
                    attendanceRecord.StatusOT = true;
                    attendanceRecord.Remarks = attendanceRecord.Remarks + "[R-OT]";
                }
                else
                {
                    /////////// to-do -----calculate Margins for those shifts which has break mins
                    if (shift.HasBreak == true)
                    {
                        attendanceRecord.WorkMin = (short)(mins.TotalMinutes - shift.BreakMin);
                        attendanceRecord.ShifMin = (short)(CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek) - (short)shift.BreakMin);
                    }
                    else
                    {
                        //Calculate Late IN, Compare margin with Shift Late In
                        int _lateMin = (int)shift.LateIn;
                        if (attendanceRecord.TimeIn.Value.TimeOfDay > (attendanceRecord.DutyTime + new TimeSpan(0, _lateMin, 0)))
                        {
                            TimeSpan lateMinsSpan = (TimeSpan)(attendanceRecord.TimeIn.Value.TimeOfDay - attendanceRecord.DutyTime);
                            if (lateMinsSpan.TotalMinutes > shift.LateIn)
                            {
                                attendanceRecord.LateIn = (short)lateMinsSpan.TotalMinutes;
                                attendanceRecord.StatusLI = true;
                                attendanceRecord.EarlyIn = null;
                                attendanceRecord.Remarks = attendanceRecord.Remarks + "[LI]";
                            }
                            else
                            {
                                attendanceRecord.StatusLI = null;
                                attendanceRecord.LateIn = null;
                                attendanceRecord.Remarks.Replace("[LI]", "");
                            }
                        }
                        else
                        {
                            attendanceRecord.StatusLI = null;
                            attendanceRecord.LateIn = null;
                            attendanceRecord.Remarks.Replace("[LI]", "");
                        }

                        //Calculate Early In, Compare margin with Shift Early In
                        if (attendanceRecord.TimeIn.Value.TimeOfDay < attendanceRecord.DutyTime)
                        {
                            TimeSpan EarlyInMinsSpan = (TimeSpan)(attendanceRecord.DutyTime - attendanceRecord.TimeIn.Value.TimeOfDay);
                            if (EarlyInMinsSpan.TotalMinutes > shift.EarlyIn)
                            {
                                attendanceRecord.EarlyIn = (short)EarlyInMinsSpan.TotalMinutes;
                                attendanceRecord.StatusEI = true;
                                attendanceRecord.LateIn = null;
                                attendanceRecord.Remarks = attendanceRecord.Remarks + "[EI]";
                            }
                            else
                            {
                                attendanceRecord.StatusEI = null;
                                attendanceRecord.EarlyIn = null;
                                attendanceRecord.Remarks.Replace("[EI]", "");
                            }
                        }
                        else
                        {
                            attendanceRecord.StatusEI = null;
                            attendanceRecord.EarlyIn = null;
                            attendanceRecord.Remarks.Replace("[EI]", "");
                        }

                        // CalculateShiftEndTime = ShiftStart + DutyHours
                        DateTime shiftEnd = CalculateShiftEndTime(shift, attendanceRecord.AttDate.Value, attendanceRecord.DutyTime.Value,(short)attendanceRecord.ShifMin);

                        //Calculate Early Out, Compare margin with Shift Early Out
                        if (attendanceRecord.TimeOut < shiftEnd)
                        {
                            TimeSpan EarlyOutMinsSpan = (TimeSpan)(shiftEnd - attendanceRecord.TimeOut);
                            if (EarlyOutMinsSpan.TotalMinutes > shift.EarlyOut)
                            {
                                attendanceRecord.EarlyOut = (short)EarlyOutMinsSpan.TotalMinutes;
                                attendanceRecord.StatusEO = true;
                                attendanceRecord.LateOut = null;
                                attendanceRecord.Remarks = attendanceRecord.Remarks + "[EO]";
                            }
                            else
                            {
                                attendanceRecord.StatusEO = null;
                                attendanceRecord.EarlyOut = null;
                                attendanceRecord.Remarks.Replace("[EO]", "");
                            }
                        }
                        else
                        {
                            attendanceRecord.StatusEO = null;
                            attendanceRecord.EarlyOut = null;
                            attendanceRecord.Remarks.Replace("[EO]", "");
                        }
                        //Calculate Late Out, Compare margin with Shift Late Out
                        if (attendanceRecord.TimeOut.Value > shiftEnd)
                        {
                            TimeSpan LateOutMinsSpan = (TimeSpan)(attendanceRecord.TimeOut.Value - shiftEnd);
                            if (LateOutMinsSpan.TotalMinutes > shift.LateOut)
                            {
                                attendanceRecord.LateOut = (short)LateOutMinsSpan.TotalMinutes;
                                // Late Out cannot have an early out, In case of poll at multiple times before and after shiftend
                                attendanceRecord.EarlyOut = null;
                                attendanceRecord.StatusLO = true;
                                attendanceRecord.Remarks = attendanceRecord.Remarks + "[LO]";
                            }
                            else
                            {
                                attendanceRecord.StatusLO = null;
                                attendanceRecord.LateOut = null;
                                attendanceRecord.OTMin = null;
                                attendanceRecord.StatusOT = null;
                                attendanceRecord.Remarks.Replace("[OT]", "");
                                attendanceRecord.Remarks.Replace("[N-OT]", "");
                                attendanceRecord.Remarks.Replace("[LO]", "");
                            }
                        }
                        else
                        {
                            attendanceRecord.StatusLO = null;
                            attendanceRecord.LateOut = null;
                            attendanceRecord.OTMin = null;
                            attendanceRecord.StatusOT = null;
                            attendanceRecord.Remarks.Replace("[OT]", "");
                            attendanceRecord.Remarks.Replace("[N-OT]", "");
                            attendanceRecord.Remarks.Replace("[LO]", "");
                        }

                        //Subtract EarlyIn and LateOut from Work Minutes
                        //////-------to-do--------- Automate earlyin,lateout from shift setup
                        attendanceRecord.WorkMin = (short)(mins.TotalMinutes);
                        if (attendanceRecord.EarlyIn != null && attendanceRecord.EarlyIn > shift.EarlyIn)
                        {
                            attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.EarlyIn);
                        }
                        if (attendanceRecord.LateOut != null && attendanceRecord.LateOut > shift.LateOut)
                        {
                            attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.LateOut);
                        }
                        if (attendanceRecord.LateOut != null || attendanceRecord.EarlyIn != null)

                            // round off work mins if overtime less than shift.OverTimeMin >
                            if (attendanceRecord.WorkMin > CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek) && (attendanceRecord.WorkMin <= (CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek) + shift.OverTimeMin)))
                            {
                                attendanceRecord.WorkMin = CalculateShiftMinutes(shift, attendanceRecord.AttDate.Value.DayOfWeek);
                            }
                        //Calculate OverTime = EI+OT, Compare margin with Shift OverTime
                        //----to-do----- Handle from shift
                        if (attendanceRecord.LateOut >0)
                        {
                            if (attendanceRecord.StatusGZ != true || attendanceRecord.StatusDO != true)
                            {
                                short _EarlyIn;
                                short _LateOut;
                                if (attendanceRecord.EarlyIn == null)
                                    _EarlyIn = 0;
                                else
                                    _EarlyIn = 0;

                                if (attendanceRecord.LateOut == null)
                                    _LateOut = 0;
                                else
                                    _LateOut = (short)attendanceRecord.LateOut;

                                attendanceRecord.OTMin = (short)(_EarlyIn + _LateOut);
                                attendanceRecord.StatusOT = true;
                                attendanceRecord.Remarks = attendanceRecord.Remarks + "[N-OT]";
                            }
                            else
                            {
                                attendanceRecord.OTMin = null;
                                attendanceRecord.StatusOT = null;
                                attendanceRecord.Remarks.Replace("[OT]", "");
                                attendanceRecord.Remarks.Replace("[N-OT]", "");
                            }
                        }
                        //Mark Absent if less than 4 hours
                        if (attendanceRecord.AttDate.Value.DayOfWeek != DayOfWeek.Friday)
                        {
                            if (attendanceRecord.DutyCode == "D")
                            {
                                short MinShiftMin = (short)shift.MinHrs;
                                if (attendanceRecord.WorkMin < MinShiftMin)
                                {
                                    attendanceRecord.StatusAB = true;
                                    attendanceRecord.StatusP = false;
                                    attendanceRecord.Remarks = attendanceRecord.Remarks + "[Absent]";
                                    attendanceRecord.Remarks.Replace("[LI]", "");
                                    attendanceRecord.Remarks.Replace("[EI]", "");
                                    attendanceRecord.Remarks.Replace("[EO]", "");
                                    attendanceRecord.Remarks.Replace("[LO]", "");
                                }
                                else
                                {
                                    attendanceRecord.StatusAB = false;
                                    attendanceRecord.StatusP = true;
                                    attendanceRecord.Remarks.Replace("[Absent]", "");
                                }
                            }
                        }
                    }
                }

            }
            catch (Exception ex)
            {

            }
        }
예제 #22
0
        //Sorting Time Out
        public static void SortingOutTime(AttData attendanceRecord)
        {
            List<DateTime> _OutTimes = new List<DateTime>();

            if (attendanceRecord.Tout0 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout0);
            if (attendanceRecord.Tout1 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout1);
            if (attendanceRecord.Tout2 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout2);
            if (attendanceRecord.Tout3 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout3);
            if (attendanceRecord.Tout4 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout4);
            if (attendanceRecord.Tout5 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout5);
            if (attendanceRecord.Tout6 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout6);
            if (attendanceRecord.Tout7 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout7);
            if (attendanceRecord.Tout8 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout8);
            if (attendanceRecord.Tout9 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout9);
            if (attendanceRecord.Tout10 != null)
                _OutTimes.Add((DateTime)attendanceRecord.Tout10);

            var list = _OutTimes.OrderBy(x => x.TimeOfDay.Hours).ToList();
            PlacedSortedOutTime(attendanceRecord, list);
        }
예제 #23
0
        public ActionResult EditAttWizardOne(FormCollection form)
        {
            try
            {
                User LoggedInUser = Session["LoggedUser"] as User;
                ViewBag.JobCardType = new SelectList(db.JobCards.OrderBy(s=>s.WorkCardName), "WorkCardID", "WorkCardName");
                ViewBag.ShiftList = new SelectList(db.Shifts.OrderBy(s=>s.ShiftName), "ShiftID", "ShiftName");
                ViewBag.CrewList = new SelectList(db.Crews.OrderBy(s=>s.CrewName), "CrewID", "CrewName");
                ViewBag.CompanyID = new SelectList(db.Companies.OrderBy(s => s.CompName), "CompID", "CompName",LoggedInUser.CompanyID);
                ViewBag.CompanyIDJobCard = new SelectList(db.Companies, "CompID", "CompName");
                ViewBag.SectionList = new SelectList(db.Sections.OrderBy(s=>s.SectionName), "SectionID", "SectionName");
                ViewData["datef"] = Convert.ToDateTime(Request.Form["DateFrom"].ToString()).ToString("yyyy-MM-dd");
                ViewBag.DesignationID = new SelectList(db.Designations.OrderBy(s=>s.DesignationName), "DesignationID", "DesignationName");
                //ViewData["datef"] = Request.Form["DateFrom"].ToString();
                if (Request.Form["EmpNo"].ToString() != "" && Request.Form["DateFrom"].ToString() != "")
                {
                    string _EmpNo = Request.Form["EmpNo"].ToString();
                    DateTime _AttDataFrom = Convert.ToDateTime(Request.Form["DateFrom"].ToString());
                    Session["EditAttendanceDate"] = Request.Form["DateFrom"].ToString();
                    var _CompId = Request.Form["CompanyID"];
                    int compID = Convert.ToInt32(_CompId);
                    AttData _attData = new AttData();
                    List<Emp> _Emp = new List<Emp>();
                    int EmpID = 0;
                    _Emp = db.Emps.Where(aa => aa.EmpNo == _EmpNo && aa.CompanyID ==compID && aa.Status==true).ToList();
                    if (_Emp.Count > 0)
                        EmpID = _Emp.FirstOrDefault().EmpID;
                    _attData = db.AttDatas.FirstOrDefault(aa => aa.EmpID == EmpID && aa.AttDate == _AttDataFrom);
                    if (_attData != null)
                    {
                        List<PollData> _Polls = new List<PollData>();
                        string _EmpDate = _attData.EmpID.ToString() + _AttDataFrom.Date.ToString("yyMMdd");
                        _Polls = db.PollDatas.Where(aa => aa.EmpDate == _EmpDate).OrderBy(a => a.EntTime).ToList();
                        ViewBag.PollsDataIn = _Polls.Where(aa => aa.RdrDuty == 1);
                        ViewBag.PollsDataOut = _Polls.Where(aa => aa.RdrDuty == 5);
                        ViewBag.EmpID = new SelectList(db.Emps.OrderBy(s=>s.EmpName), "EmpID", "EmpNo", _attData.EmpID);
                        Session["NEmpNo"] = _attData.EmpID;
                        ViewBag.SucessMessage = "";
                        if (_attData.WorkMin != null)
                            ViewBag.WorkMin = (TimeSpan.FromMinutes((double)_attData.WorkMin));
                        if (_attData.LateOut != null)
                            ViewBag.LateOut = TimeSpan.FromMinutes((double)_attData.LateOut);
                        if (_attData.LateIn != null)
                            ViewBag.LateIn = TimeSpan.FromMinutes((double)_attData.LateIn);
                        if (_attData.EarlyOut != null)
                            ViewBag.EarlyOut = TimeSpan.FromMinutes((double)_attData.EarlyOut);
                        if (_attData.EarlyIn != null)
                            ViewBag.EarlyIn = TimeSpan.FromMinutes((double)_attData.EarlyIn);
                        if (_attData.OTMin != null)
                            ViewBag.OT = TimeSpan.FromMinutes((double)_attData.OTMin);
                        if (_attData.GZOTMin != null)
                            ViewBag.GZOT = TimeSpan.FromMinutes((double)_attData.GZOTMin);
                        return View(_attData);
                    }
                    else
                        return View("Index");
                }
                else
                    return View("Index");
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Sequence"))
                    ViewBag.Message = "No Entry found on this particular date";
                return View("Index");

            }
        }
예제 #24
0
        public ActionResult EditAttWizardOne(FormCollection form)
        {
            try
            {
                ViewBag.JobCardType = new SelectList(db.JobCards, "WorkCardID", "WorkCardName");
                if (Request.Form["EmpNo"].ToString() != "" && Request.Form["DateFrom"].ToString() != "")
                {
                    string _EmpNo = Request.Form["EmpNo"].ToString();
                    DateTime _AttDataFrom = Convert.ToDateTime(Request.Form["DateFrom"].ToString());
                    AttData _attData = new AttData();
                    _attData = db.AttDatas.First(aa => aa.EmpNo == _EmpNo && aa.AttDate == _AttDataFrom);
                    if (_attData != null)
                    {
                        ViewBag.EmpID = new SelectList(db.Emps, "EmpID", "EmpNo", _attData.EmpID);
                        return View(_attData);
                    }
                    else
                        return View("Index");
                }
                else
                    return View("Index");
            }
            catch (Exception ex)
            {
                if(ex.Message.Contains("Sequence"))
                    ViewBag.Message = "No Entry found on this particular date";
                return View("Index");

            }
        }