public static string LeaveTypeFinder(int EmpId, DateTime day)
        {
            MEAPSDbEntities  context = new MEAPSDbEntities();
            LeaveApplication la      = context.LeaveApplications.ToList().SingleOrDefault(x => x.EmployeeEmpId == EmpId && x.Date == day);

            return(la.Type);
        }
        public static void Clean()
        {
            MEAPSDbEntities   context     = new MEAPSDbEntities();
            var               query       = from x in context.CSVDatas select x;
            List <CSVData>    unprocessed = query.ToList();
            List <Attendance> processed   = new List <Attendance>();

            foreach (CSVData item in unprocessed)
            {
                TimeSpan   inTime  = Convert.ToDateTime(item.In1).TimeOfDay;
                TimeSpan   outTime = Convert.ToDateTime(getOutTime(item)).TimeOfDay;
                DateTime   date    = DateTime.ParseExact(item.Date, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                int        empid   = Convert.ToInt32(item.EmpId);
                Attendance record  = new Attendance();
                record.Date           = date;
                record.InTime         = inTime;
                record.OutTime        = outTime;
                record.Employee_EmpId = empid;
                processed.Add(record);
            }

            foreach (Attendance item in processed)
            {
                context.Attendances.Add(item);
                context.SaveChanges();
            }
        }
        static void Main(string[] args)
        {
            MEAPSDbEntities context = new MEAPSDbEntities();

            Console.WriteLine("Tuples to insert:");
            int n = Int32.Parse(Console.ReadLine());

            for (int i = 0; i < n; i++)
            {
                Holiday h = new Holiday();
                Console.Write("Date:");
                string dt = Console.ReadLine();
                h.Date = Convert.ToDateTime(dt);
                Console.Write("Comment:");
                h.Comment = Console.ReadLine();
                context.Holidays.Add(h);
                context.SaveChanges();
            }

            Console.Write("Date to check: ");
            string   dt1  = Console.ReadLine();
            DateTime dt2  = Convert.ToDateTime(dt1);
            bool     flag = WorkingDayChecker.IsWorkingDay(dt2);

            Console.WriteLine(flag.ToString());
            Console.ReadKey();
        }
Exemple #4
0
        public static List <MonthlyLeaveStatus> Calculate(int Date)
        {
            List <MonthlyLeaveStatus> ls_mon  = new List <MonthlyLeaveStatus>();
            MEAPSDbEntities           context = new MEAPSDbEntities();

            foreach (var emp in context.Employees)
            {
                double             sumCL = 0, sumML = 0, sumEL = 0, sumLWP = 0;
                List <LeaveStatus> ls_emp = (from x in context.LeaveStatuses where x.EmployeeEmpId == emp.EmpId select x).ToList();
                for (int i = 1; i <= 12; i++)
                {
                    List <LeaveStatus> ls_emp_mon = (from x in ls_emp where x.Date.Month == i && x.Date.Year == Date select x).ToList();
                    sumCL  = ls_emp_mon.Sum(x => ((x.FCL ?? 0) + (0.5 * (x.HCL ?? 0)) + (0.25 * ((x.QCL_In ?? 0) + (x.QCL_Out ?? 0)))));
                    sumML  = ls_emp_mon.Sum(x => ((x.FML ?? 0) + (0.5 * (x.HML ?? 0))));
                    sumEL  = ls_emp_mon.Sum(x => (x.EL ?? 0));
                    sumLWP = ls_emp_mon.Sum(x => x.LWP);
                    MonthlyLeaveStatus mls = new MonthlyLeaveStatus();
                    mls.EmployeeId = emp.EmpId;
                    mls.Month      = System.Globalization.DateTimeFormatInfo.CurrentInfo.GetMonthName(i);
                    mls.CL         = sumCL;
                    mls.ML         = sumML;
                    mls.EL         = sumEL;
                    ls_mon.Add(mls);
                }
            }
            return(ls_mon);
        }
Exemple #5
0
        public static void NonRecordedAttendance(int EmpId, DateTime day)
        {
            // 1. Check ExceptionAttendance for employee id.
            // 2. If employee exists, mark employee as present
            // 3. Else check for applications, mark employee as absent based on that.

            MEAPSDbEntities     context = new MEAPSDbEntities();
            ExceptionAttendance ea      = context.ExceptionAttendances.SingleOrDefault(x => (x.EmpId == EmpId) && (x.Date == day));

            if (ea != null) // if in exception attendance, mark as full present.
            {
                LeaveStatus ls = new LeaveStatus();
                ls.Date          = day;
                ls.EmployeeEmpId = EmpId;
                ls.PresenceState = "FP";
                context.LeaveStatuses.Add(ls);
                context.SaveChanges();
            }
            else                           // else check for applications
            {
                LeaveStatus ls = new LeaveStatus();
                ls.Date          = day;
                ls.EmployeeEmpId = EmpId;
                ls.PresenceState = "A";

                LeaveApplication la = context.LeaveApplications.SingleOrDefault(x => (x.Date == day) && (x.EmployeeEmpId == EmpId));
                if (la != null)
                {
                    string type = la.Type;
                    switch (type)
                    {
                    case "CL":
                        ls.FCL = 1;
                        break;

                    case "ML":
                        ls.FML = 1;
                        break;

                    case "EL":
                        ls.EL = 1;
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    ls.FCL = 1;
                }
                ls = LeaveDeduction.Deduct(ls);
                context.LeaveStatuses.Add(ls);
                context.SaveChanges();
            }
        }
Exemple #6
0
        public static void RecordedAttendance(int EmpId, DateTime day, TimeSpan EntryTime, TimeSpan ExitTime)
        {
            MEAPSDbEntities context          = new MEAPSDbEntities();
            TimeSpan        DefaultEntryTime = Convert.ToDateTime("9:50 AM").TimeOfDay;
            TimeSpan        DefaultExitTime  = Convert.ToDateTime("5:25 PM").TimeOfDay;
            LeaveStatus     ls = new LeaveStatus();

            ls.Date          = day;
            ls.EmployeeEmpId = EmpId;
            ls = Calculate(ls, EntryTime, ExitTime, day);
            ls = LeaveDeduction.Deduct(ls);
            context.LeaveStatuses.Add(ls);
            context.SaveChanges();
        }
Exemple #7
0
        public static void Find(int EmpId, DateTime Day)
        {
            MEAPSDbEntities context = new MEAPSDbEntities();
            Attendance      at      = context.Attendances.SingleOrDefault(x => (x.Date == Day) && (x.Employee_EmpId == EmpId));

            if (at == null)
            {
                DailyAttendanceHandler.NonRecordedAttendance(EmpId, Day);
            }
            else
            {
                TimeSpan EntryTime = at.InTime;
                TimeSpan ExitTime  = at.OutTime;
                DailyAttendanceHandler.RecordedAttendance(EmpId, Day, EntryTime, ExitTime);
            }
        }
Exemple #8
0
        public static bool Find(int EmpId, DateTime date)
        {
            MEAPSDbEntities context = new MEAPSDbEntities();
            var             query   = from x in context.LeaveApplications
                                      where ((x.EmployeeEmpId == EmpId) && (x.Date == date))
                                      select x;

            if (query.ToList().Count == 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
        public static void calculate(DateTime StartDate, DateTime EndDate)
        {
            MEAPSDbEntities context = new MEAPSDbEntities();

            foreach (Employee emp in context.Employees)
            {
                if ((emp.JoiningDate >= StartDate) && (emp.JoiningDate <= EndDate))
                {
                    StartDate = emp.JoiningDate;
                }
                foreach (DateTime day in ListOfDays.EachDay(StartDate, EndDate))
                {
                    if (WorkingDayChecker.IsWorkingDay(day))
                    {
                        AttendanceFinder.Find(emp.EmpId, day);
                    }
                }
            }
        }
        public static bool IsWorkingDay(DateTime day)
        {
            bool            flag    = true;
            MEAPSDbEntities context = new MEAPSDbEntities();
            var             query   = from x in context.Holidays
                                      select x.Date;
            List <DateTime> ListOfHolidays = query.ToList();

            if (ListOfHolidays.Contains(day))
            {
                flag = false;
            }
            else if ((day.DayOfWeek == DayOfWeek.Saturday) || (day.DayOfWeek == DayOfWeek.Sunday))
            {
                flag = false;
            }
            else
            {
                flag = true;
            }
            return(flag);
        }
        public static LeaveStatus Deduct(LeaveStatus ls)
        {
            MEAPSDbEntities context = new MEAPSDbEntities();
            int             EmpId   = ls.EmployeeEmpId;
            Employee        em      = context.Employees.SingleOrDefault(x => x.EmpId == EmpId);

            double reqCL = Convert.ToDouble(((ls.QCL_In ?? 0 + ls.QCL_Out ?? 0) * 0.25) + (ls.HCL ?? 0) * 0.5 + (ls.FCL ?? 0));
            double reqML = Convert.ToDouble((ls.FML ?? 0) + (ls.HML ?? 0) * 0.5);
            double reqEL = Convert.ToDouble(ls.EL ?? 0);
            double remCL = em.CL;
            double remML = em.ML;
            double remEL = em.EL;
            double LWP   = em.LWP;

            #region DedcutionLogic
            if (reqCL > remCL)
            {
                if (reqCL > remML)
                {
                    if (reqCL > remEL)
                    {
                        LWP       += reqCL;
                        ls.LWP     = reqCL;
                        ls.QCL_In  = null;
                        ls.QCL_Out = null;
                        ls.HCL     = null;
                        ls.FCL     = null;
                    }
                    else
                    {
                        remEL -= reqCL;
                    }
                }
                else
                {
                    remML -= reqCL;
                }
            }
            else
            {
                remCL -= reqCL;
            }

            if (reqML > remML)
            {
                if (reqML > remEL)
                {
                    LWP   += reqML;
                    ls.LWP = reqML;
                    ls.HML = null;
                    ls.FML = null;
                }
                else
                {
                    remEL -= reqML;
                }
            }
            else
            {
                remML -= reqML;
            }

            if (reqEL > remEL)
            {
                LWP   += reqEL;
                ls.LWP = reqEL;
                ls.EL  = null;
            }
            else
            {
                remEL -= reqML;
            }
            #endregion

            em.CL  = remCL;
            em.ML  = remML;
            em.EL  = remML;
            em.LWP = LWP;
            context.SaveChanges();

            return(ls);
        }
        static void Main(string[] args)
        {
            LeaveStatus ls = new LeaveStatus();

            Console.WriteLine("EmpId:");
            int empid = Int32.Parse(Console.ReadLine());

            ls.EmployeeEmpId = empid;
            Console.WriteLine("Date:");
            DateTime dt = Convert.ToDateTime(Console.ReadLine());

            ls.Date = dt;
            Console.WriteLine("Entry Time:");
            TimeSpan en = Convert.ToDateTime(Console.ReadLine()).TimeOfDay;

            Console.WriteLine("Exit Time:");
            TimeSpan ex = Convert.ToDateTime(Console.ReadLine()).TimeOfDay;

            Console.WriteLine("1: Enter leave application details. \n2. Delete. \n3. Continue...");
            int n = Int32.Parse(Console.ReadLine());

            if (n == 1)
            {
                MEAPSDbEntities  context = new MEAPSDbEntities();
                LeaveApplication la      = new LeaveApplication();
                Console.WriteLine("Enter type:");
                string type = Console.ReadLine();
                la.Date          = dt;
                la.EmployeeEmpId = empid;
                la.Type          = type;
                la.Remarks       = "test";
                context.LeaveApplications.Add(la);
                context.SaveChanges();
            }
            else if (n == 2)
            {
                MEAPSDbEntities  context = new MEAPSDbEntities();
                LeaveApplication la      = context.LeaveApplications.SingleOrDefault(x => (x.EmployeeEmpId == empid) && (x.Date == dt));
                context.LeaveApplications.Remove(la);
                context.SaveChanges();
            }

            Console.WriteLine("1: Enter time exception details. \n2. Delete. \n3. Continue...");
            n = Int32.Parse(Console.ReadLine());
            if (n == 1)
            {
                MEAPSDbEntities context = new MEAPSDbEntities();
                TimeException   te      = new TimeException();
                Console.WriteLine("Entry Time:");
                en = Convert.ToDateTime(Console.ReadLine()).TimeOfDay;
                Console.WriteLine("Exit Time:");
                ex      = Convert.ToDateTime(Console.ReadLine()).TimeOfDay;
                te.Date = dt; te.InTime = en; te.OutTime = ex;
                context.TimeExceptions.Add(te);
                context.SaveChanges();
            }
            if (n == 2)
            {
                MEAPSDbEntities context = new MEAPSDbEntities();
                TimeException   te      = context.TimeExceptions.SingleOrDefault(x => x.Date == dt);
                context.TimeExceptions.Remove(te);
                context.SaveChanges();
            }

            ls = Calculate(ls, en, ex, dt);

            Console.WriteLine("Date: " + ls.Date.ToShortDateString());
            Console.WriteLine("Employee ID: " + ls.EmployeeEmpId);
            Console.WriteLine("Presence: " + ls.PresenceState);
            Console.WriteLine("QCL In: " + ls.QCL_In);
            Console.WriteLine("QCL Out: " + ls.QCL_Out);
            Console.WriteLine("HCL: " + ls.HCL);
            Console.WriteLine("FCL: " + ls.FCL);
            Console.WriteLine("HML: " + ls.HML);
            Console.WriteLine("FML: " + ls.FML);
            Console.WriteLine("EL: " + ls.EL);
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
        public static LeaveStatus Calculate(LeaveStatus ls, TimeSpan EntryTime, TimeSpan ExitTime, DateTime day)
        {
            TimeSpan nineFiftyAM      = Convert.ToDateTime("09:50 AM").TimeOfDay;
            TimeSpan tenAM            = Convert.ToDateTime("10:00 AM").TimeOfDay;
            TimeSpan tenThirtyAM      = Convert.ToDateTime("10:30 AM").TimeOfDay;
            TimeSpan oneThirtyPM      = Convert.ToDateTime("01:30 PM").TimeOfDay;
            TimeSpan threeThirtyPM    = Convert.ToDateTime("03:30 PM").TimeOfDay;
            TimeSpan fiveTwentyFivePM = Convert.ToDateTime("05:25 PM").TimeOfDay;
            string   type             = "";

            if (LeaveApplicationFinder.Find(ls.EmployeeEmpId, day))
            {
                type = LeaveTypeFinder(ls.EmployeeEmpId, day);
            }

            MEAPSDbEntities context = new MEAPSDbEntities();
            TimeException   te      = context.TimeExceptions.SingleOrDefault(x => x.Date == day);

            if ((te != null) && (EntryTime <= te.InTime) && (ExitTime >= te.OutTime))
            {
                ls.PresenceState = "FP";
            }
            else
            {
                if (EntryTime <= nineFiftyAM)
                {
                    if (ExitTime <= oneThirtyPM)
                    {
                        switch (type)
                        {
                        case "CL": ls.FCL = 1; break;

                        case "ML": ls.FML = 1; break;

                        case "EL": ls.EL = 1; break;

                        default: ls.FCL = 1; break;
                        }
                        ls.PresenceState = "PP";
                    }
                    else if ((ExitTime > oneThirtyPM) && (ExitTime <= threeThirtyPM))
                    {
                        switch (type)
                        {
                        case "CL": ls.HCL = 1; break;

                        case "ML": ls.HML = 1; break;

                        default: ls.HCL = 1; break;
                        }
                        ls.PresenceState = "PP";
                    }
                    else if ((ExitTime > threeThirtyPM) && (ExitTime <= fiveTwentyFivePM))
                    {
                        ls.QCL_Out       = 1;
                        ls.PresenceState = "PP";
                    }
                    else
                    {
                        ls.PresenceState = "FP";
                    }
                }
                else if ((EntryTime > nineFiftyAM) && (EntryTime <= tenAM))
                {
                    if (ExitTime <= oneThirtyPM)
                    {
                        switch (type)
                        {
                        case "CL": ls.FCL = 1; break;

                        case "ML": ls.FML = 1; break;

                        case "EL": ls.EL = 1; break;

                        default: ls.FCL = 1; break;
                        }
                        ls.PresenceState = "PP";
                    }
                    else if ((ExitTime > oneThirtyPM) && (ExitTime <= threeThirtyPM))
                    {
                        ls.QCL_In = 1;
                        if (type == "ML")
                        {
                            ls.HML = 1;
                        }
                        else
                        {
                            ls.HCL = 1;
                        }
                        ls.PresenceState = "PP";
                    }
                    else if ((ExitTime > threeThirtyPM) && (ExitTime <= fiveTwentyFivePM))
                    {
                        ls.QCL_In        = 1;
                        ls.QCL_Out       = 1;
                        ls.PresenceState = "PP";
                    }
                    else
                    {
                        ls.QCL_In        = 1;
                        ls.PresenceState = "PP";
                    }
                }
                else if ((EntryTime > tenAM) && (EntryTime <= tenThirtyAM))
                {
                    if (ExitTime <= oneThirtyPM)
                    {
                        switch (type)
                        {
                        case "CL": ls.FCL = 1; break;

                        case "ML": ls.FML = 1; break;

                        case "EL": ls.EL = 1; break;

                        default: ls.FCL = 1; break;
                        }
                        ls.PresenceState = "PP";
                    }
                    else if ((ExitTime > oneThirtyPM) && (ExitTime <= threeThirtyPM))
                    {
                        ls.QCL_In = 1;
                        if (type == "ML")
                        {
                            ls.HML = 1;
                        }
                        else
                        {
                            ls.HCL = 1;
                        }
                        ls.PresenceState = "PP";
                    }
                    else if ((ExitTime > threeThirtyPM) && (ExitTime <= fiveTwentyFivePM))
                    {
                        ls.QCL_In        = 1;
                        ls.QCL_Out       = 1;
                        ls.PresenceState = "PP";
                    }
                    else
                    {
                        ls.QCL_In        = 1;
                        ls.PresenceState = "PP";
                    }
                }
                else if ((EntryTime > tenThirtyAM) && (EntryTime <= oneThirtyPM))
                {
                    if (ExitTime < fiveTwentyFivePM)
                    {
                        switch (type)
                        {
                        case "CL": ls.FCL = 1; break;

                        case "ML": ls.FML = 1; break;

                        case "EL": ls.EL = 1; break;

                        default: ls.FCL = 1; break;
                        }
                        ls.PresenceState = "PP";
                    }
                    else
                    {
                        if (type == "ML")
                        {
                            ls.HML = 1;
                        }
                        else
                        {
                            ls.HCL = 1;
                        }
                        ls.PresenceState = "PP";
                    }
                }
                else //(EntryTime >= oneThirtyPM)
                {
                    switch (type)
                    {
                    case "CL": ls.FCL = 1; break;

                    case "ML": ls.FML = 1; break;

                    case "EL": ls.EL = 1; break;

                    default: ls.FCL = 1; break;
                    }
                    ls.PresenceState = "PP";
                }
            }



            return(ls);
        }