public ActionResult RejectedCS(List <AF_CSModel> GetApproved, string ifalter)
        {
            string[] Position      = { "Supervisor", "Manager" };
            int      currentstatus = 0;
            string   CSRefNo       = "";

            foreach (AF_CSModel otrequest in GetApproved)
            {
                if (otrequest.Approved == true)
                {
                    CSRefNo = otrequest.CS_RefNo;
                    AF_ChangeSchedulefiling otfile = new AF_ChangeSchedulefiling();
                    otfile                 = (from c in db.AF_ChangeSchedulefiling where c.CS_RefNo == otrequest.CS_RefNo && c.EmployeeNo == otrequest.EmployeeNo select c).FirstOrDefault();
                    currentstatus          = (otfile.Status + 1) * -1;
                    otfile.Status          = currentstatus;
                    db.Entry(otfile).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            #region update Approver Status
            string refno = GetApproved[0].CS_RefNo;
            db.AF_EmailCSRequest_Rejected(CSRefNo);
            //string pos = (ifalter == "alter") ? "Alternative " + Position[currentstatus*-1] : Position[currentstatus*-1];
            M_Section_ApproverStatus approverstatus = (from c in db.M_Section_ApproverStatus
                                                       where c.RefNo == refno &&
                                                       c.EmployeeNo == user.UserName
                                                       //&& c.Position == pos
                                                       select c).FirstOrDefault();


            approverstatus.Approved        = 1;
            approverstatus.ApprovedDate    = db.TT_GETTIME().FirstOrDefault();
            db.Entry(approverstatus).State = EntityState.Modified;
            db.SaveChanges();

            #endregion

            return(Json(new { }, JsonRequestBehavior.AllowGet));
        }
Exemple #2
0
        public JsonResult ReadUploadedFile()
        {
            try {
                var           file         = Request.Files[0];
                int           fileSize     = file.ContentLength;
                string        fileName     = file.FileName;
                string        TodayRefno   = helper.GenerateCSRef();
                string        Section      = "";
                List <string> Unregistered = new List <string>();
                using (var package = new ExcelPackage(file.InputStream))
                {
                    ExcelWorksheet worksheet         = package.Workbook.Worksheets[1];
                    int            noOfCol           = worksheet.Dimension.End.Column;
                    int            noOfRow           = worksheet.Dimension.End.Row;
                    int            endColumn         = worksheet.Dimension.Start.Column;
                    int            startColumn       = endColumn;
                    int            startRowForTable  = 14;
                    int            totalNoOfTableRow = 30;



                    for (int x = 0; x < totalNoOfTableRow; x++)
                    {
                        string Empno = "";

                        try
                        {
                            Empno = worksheet.Cells[startRowForTable, 2].Value.ToString();
                            M_Employee_Master_List Employee = (from c in db.M_Employee_Master_List
                                                               where c.EmpNo == Empno
                                                               select c).FirstOrDefault();

                            if (Employee != null)
                            {
                                AF_ChangeSchedulefiling bemodify = (from c in db.AF_ChangeSchedulefiling where c.EmployeeNo == Employee.EmpNo && c.CS_RefNo == TodayRefno select c).FirstOrDefault();

                                if (bemodify == null)
                                {
                                    #region Creating via upload
                                    //Section = user.Section;//Employee.Section;
                                    AF_ChangeSchedulefiling CSrequest = new AF_ChangeSchedulefiling();
                                    CSrequest.CS_RefNo    = TodayRefno;
                                    CSrequest.BIPH_Agency = Employee.Company;
                                    CSrequest.FileType    = 3;                                                                                                                           //Upload
                                    CSrequest.Section     = (from c in db.M_Employee_CostCenter where c.EmployNo == Empno orderby c.ID descending select c.CostCenter_AMS).FirstOrDefault();
                                    Section = (from c in db.M_Cost_Center_List where c.Cost_Center == CSrequest.Section orderby c.ID descending select c.GroupSection).FirstOrDefault(); //otfile.Section;

                                    CSrequest.EmployeeNo = Employee.EmpNo;
                                    CSrequest.CSType     = worksheet.Cells[startRowForTable, 4].Value.ToString();
                                    CSrequest.DateFrom   = Convert.ToDateTime(worksheet.Cells[startRowForTable, 5].Value);
                                    CSrequest.DateTo     = Convert.ToDateTime(worksheet.Cells[startRowForTable, 6].Value);
                                    DateTime csin  = Convert.ToDateTime(worksheet.Cells[startRowForTable, 7].Value.ToString());
                                    DateTime csout = Convert.ToDateTime(worksheet.Cells[startRowForTable, 8].Value.ToString());
                                    CSrequest.CSin  = csin.ToString("HH:mm");
                                    CSrequest.CSout = csout.ToString("HH:mm");
                                    //if (Employee.EmpNo.Contains("BIPH"))
                                    //{
                                    CSrequest.EmployeeAccept = db.TT_GETTIME().FirstOrDefault();    //DateTime.Now;;
                                    //}

                                    CSrequest.Reason    = worksheet.Cells[startRowForTable, 9].Value.ToString();
                                    CSrequest.Status    = 0;
                                    CSrequest.StatusMax = 2;

                                    CSrequest.CreateID   = user.UserName;
                                    CSrequest.CreateDate = DateTime.Now;;
                                    CSrequest.UpdateID   = user.UserName;
                                    CSrequest.UpdateDate = DateTime.Now;;

                                    try
                                    {
                                        db.AF_ChangeSchedulefiling.Add(CSrequest);
                                        db.SaveChanges();
                                    }
                                    catch (Exception err)
                                    {
                                        Error_Logs error = new Error_Logs();
                                        error.PageModule = "Application Form - OT Request";
                                        error.ErrorLog   = err.Message;
                                        error.DateLog    = db.TT_GETTIME().FirstOrDefault();//DateTime.Now;;
                                        error.Username   = user.UserName;
                                        db.Error_Logs.Add(error);
                                        db.SaveChanges();
                                    }
                                    #endregion
                                }
                                else
                                {
                                    #region modifying via upload
                                    //Section = Employee.Section;
                                    bemodify.CS_RefNo    = TodayRefno;
                                    bemodify.BIPH_Agency = Employee.Company;
                                    bemodify.FileType    = 3;                                                                                                                                       //Upload
                                    bemodify.Section     = (from c in db.M_Employee_CostCenter where c.EmployNo == Empno orderby c.ID descending select c.CostCenter_AMS).FirstOrDefault();
                                    Section             = (from c in db.M_Cost_Center_List where c.Cost_Center == bemodify.Section orderby c.ID descending select c.GroupSection).FirstOrDefault(); //otfile.Section;
                                    bemodify.EmployeeNo = Employee.EmpNo;
                                    bemodify.CSType     = worksheet.Cells[startRowForTable, 4].Value.ToString();
                                    bemodify.DateFrom   = Convert.ToDateTime(worksheet.Cells[startRowForTable, 5].Value);
                                    bemodify.DateTo     = Convert.ToDateTime(worksheet.Cells[startRowForTable, 6].Value);
                                    DateTime csin  = Convert.ToDateTime(worksheet.Cells[startRowForTable, 7].Value.ToString());
                                    DateTime csout = Convert.ToDateTime(worksheet.Cells[startRowForTable, 8].Value.ToString());
                                    bemodify.CSin       = csin.ToString("HH:mm");
                                    bemodify.CSout      = csout.ToString("HH:mm");
                                    bemodify.Reason     = worksheet.Cells[startRowForTable, 9].Value.ToString();
                                    bemodify.Status     = 0;
                                    bemodify.StatusMax  = 2;
                                    bemodify.UpdateID   = user.UserName;
                                    bemodify.UpdateDate = DateTime.Now;;
                                    if (Employee.EmpNo.Contains("BIPH"))
                                    {
                                        bemodify.EmployeeAccept = db.TT_GETTIME().FirstOrDefault();//DateTime.Now;;
                                    }
                                    try
                                    {
                                        db.Entry(bemodify).State = EntityState.Modified;
                                        db.SaveChanges();
                                    }
                                    catch (Exception err)
                                    {
                                        Error_Logs error = new Error_Logs();
                                        error.PageModule = "Application Form - CS Request";
                                        error.ErrorLog   = err.Message;
                                        error.DateLog    = db.TT_GETTIME().FirstOrDefault();//DateTime.Now;;
                                        error.Username   = user.UserName;
                                        db.Error_Logs.Add(error);
                                        db.SaveChanges();
                                    }
                                    #endregion
                                }
                            }
                            else
                            {
                                if (Empno != "")
                                {
                                    Unregistered.Add(Empno);
                                }
                            }
                        }
                        catch (Exception err)
                        {
                            if (Empno != "")
                            {
                                Unregistered.Add(Empno);
                            }
                        }

                        startRowForTable++;
                    }

                    M_Section_ApproverStatus checker = (from c in db.M_Section_ApproverStatus where c.RefNo == TodayRefno select c).FirstOrDefault();
                    if (checker == null)
                    {
                        #region GET approver & Email
                        //string SectionID = (from c in db.M_Cost_Center_List
                        //                    where c.Cost_Center == Section
                        //                    select c.ID).FirstOrDefault().ToString();
                        List <M_Section_Approver> approver = (from c in db.M_Section_Approver where c.Section == Section select c).ToList();


                        #endregion
                        #region Generate CS Status
                        foreach (M_Section_Approver approv in approver)
                        {
                            M_Section_ApproverStatus approverstat = new M_Section_ApproverStatus();
                            approverstat.Position     = approv.Position;
                            approverstat.EmployeeNo   = approv.EmployeeNo;
                            approverstat.Section      = Section;
                            approverstat.RefNo        = helper.GenerateCSRef();
                            approverstat.Approved     = 0;
                            approverstat.OverTimeType = "";
                            approverstat.CreateID     = user.UserName;
                            approverstat.CreateDate   = DateTime.Now;;
                            approverstat.UpdateID     = user.UserName;
                            approverstat.UpdateDate   = DateTime.Now;;
                            db.M_Section_ApproverStatus.Add(approverstat);
                            db.SaveChanges();
                        }

                        #endregion
                    }



                    return(Json(new { Unregistered = Unregistered, Failed = "" }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception err)
            {
                return(Json(new { Failed = "Failed" }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult ApprovedDTR(List <AF_DTRModel> GetApproved, string ifalter, string OTType)
        {
            OTType = (OTType == null) ? "Regular":OTType;
            string[] Position = { "Supervisor", "Manager", "GeneralManager" };
            int      currentstatus = 0;
            int      stat = 0, statmax = 0;

            foreach (AF_DTRModel csrequest in GetApproved)
            {
                if (csrequest.Approved == true)
                {
                    AF_DTRfiling dtrfile = new AF_DTRfiling();
                    dtrfile                 = (from c in db.AF_DTRfiling where c.Status > -1 && c.DTR_RefNo == csrequest.DTR_RefNo && c.EmployeeNo == csrequest.EmployeeNo && c.OvertimeType == OTType select c).FirstOrDefault();
                    currentstatus           = dtrfile.Status + 1;
                    dtrfile.Status          = (csrequest.Approved == true) ? currentstatus : currentstatus - (currentstatus * 2);
                    db.Entry(dtrfile).State = EntityState.Modified;


                    db.SaveChanges();
                    stat    = dtrfile.Status;
                    statmax = dtrfile.StatusMax;
                }
                else
                {
                    AF_DTRfiling dtrfile = new AF_DTRfiling();
                    dtrfile                 = (from c in db.AF_DTRfiling where c.Status > -1 && c.DTR_RefNo == csrequest.DTR_RefNo && c.EmployeeNo == csrequest.EmployeeNo && c.OvertimeType == OTType select c).FirstOrDefault();
                    currentstatus           = dtrfile.Status + 1;
                    dtrfile.Status          = (csrequest.Approved == true) ? currentstatus : currentstatus - (currentstatus * 2);
                    db.Entry(dtrfile).State = EntityState.Modified;

                    db.SaveChanges();
                }
            }



            if (stat == statmax)
            {
                SendTheMail(GetApproved[0].DTR_RefNo);
            }

            #region update Approver Status
            string refno = GetApproved[0].DTR_RefNo;
            string pos   = (ifalter == "alter") ? "Alternative " + Position[currentstatus - 1] : Position[currentstatus - 1];
            M_Section_ApproverStatus approverstatus = (from c in db.M_Section_ApproverStatus
                                                       where c.RefNo == refno &&
                                                       c.EmployeeNo == user.UserName &&
                                                       c.Position == pos &&
                                                       c.OverTimeType == OTType
                                                       select c).FirstOrDefault();


            approverstatus.Approved        = 1;
            db.Entry(approverstatus).State = EntityState.Modified;
            db.SaveChanges();

            #endregion

            db.AF_EmailDTRRequest(refno);
            return(Json(new { }, JsonRequestBehavior.AllowGet));
        }
Exemple #4
0
        public ActionResult ApprovedOT(List <AF_OTModel> GetApproved, string ifalter, string OTType)
        {
            string[] Position = { "Supervisor", "Manager", "GeneralManager", "FactoryGeneralManager" };
            int      currentstatus = 0;
            int      stat = 0, statmax = 0;

            foreach (AF_OTModel otrequest in GetApproved)
            {
                if (otrequest.Approved == true)
                {
                    AF_OTfiling otfile = new AF_OTfiling();
                    otfile                 = (from c in db.AF_OTfiling where c.Status > -1 && c.OT_RefNo == otrequest.OT_RefNo && c.EmployeeNo == otrequest.EmployeeNo && c.OvertimeType == OTType select c).FirstOrDefault();
                    currentstatus          = otfile.Status + 1;
                    otfile.Status          = (otrequest.Approved == true) ? currentstatus : currentstatus - (currentstatus * 2);
                    db.Entry(otfile).State = EntityState.Modified;


                    if (otfile.StatusMax == otfile.Status)
                    {
                        #region Cumulative OT
                        //Save Cummulative
                        AF_OTfiling_Cumulative Employee_Cumulative = new AF_OTfiling_Cumulative();
                        Employee_Cumulative.OT_RefNo = otfile.OT_RefNo;
                        Employee_Cumulative.Schedule = (from c in db.M_Employee_Master_List_Schedule where c.EmployeeNo == otrequest.EmployeeNo orderby c.ScheduleID descending select c.ScheduleID).FirstOrDefault();
                        Employee_Cumulative.ShiftIn  = (from c in db.M_Schedule where c.ID == Employee_Cumulative.Schedule select c.Timein).FirstOrDefault();
                        Employee_Cumulative.ShiftOut = (from c in db.M_Schedule where c.ID == Employee_Cumulative.Schedule select c.TimeOut).FirstOrDefault();
                        Employee_Cumulative.OTIn     = otfile.OTin;
                        Employee_Cumulative.OTOut    = otfile.OTout;
                        Employee_Cumulative.OTDate   = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm tt"), "yyyy-MM-dd HH:mm tt", System.Globalization.CultureInfo.InvariantCulture);

                        DateTime ShiftStart = DateTime.Parse(Employee_Cumulative.ShiftIn.ToString());
                        DateTime ShiftEnd   = DateTime.Parse(Employee_Cumulative.ShiftOut.ToString());
                        DateTime OTStart    = DateTime.Parse(Employee_Cumulative.OTIn.ToString());
                        DateTime OTEnd      = DateTime.Parse(Employee_Cumulative.OTOut.ToString());
                        TimeSpan duration   = new TimeSpan();
                        if (ShiftStart > ShiftEnd)
                        {
                            ShiftEnd = ShiftEnd.AddDays(1);
                        }
                        if (OTStart > OTEnd)
                        {
                            OTEnd = OTEnd.AddDays(1);
                        }
                        if (ShiftEnd == OTStart)
                        {
                            duration = OTEnd.Subtract(ShiftEnd);
                        }
                        else if (OTStart < ShiftEnd)
                        {
                            //  OTStart = ShiftEnd;
                            duration = OTEnd.Subtract(OTStart);
                        }
                        else
                        {
                            duration = OTEnd.Subtract(OTStart);
                        }
                        double Diffminutes    = duration.TotalMinutes;
                        double Cummulativenow = Diffminutes / 60;
                        Employee_Cumulative.OTHours    = Convert.ToDecimal(Cummulativenow);
                        Employee_Cumulative.EmployeeNo = otfile.EmployeeNo;
                        //Employee_Cumulative.OTDate = Filing.DateFrom;

                        Employee_Cumulative.CreateID   = user.UserName;
                        Employee_Cumulative.CreateDate = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm tt"), "yyyy-MM-dd HH:mm tt", System.Globalization.CultureInfo.InvariantCulture);
                        Employee_Cumulative.UpdateID   = user.UserName;
                        Employee_Cumulative.UpdateDate = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm tt"), "yyyy-MM-dd HH:mm tt", System.Globalization.CultureInfo.InvariantCulture);

                        db.AF_OTfiling_Cumulative.Add(Employee_Cumulative);

                        db.SaveChanges();

                        #endregion
                    }
                    stat    = otfile.Status;
                    statmax = otfile.StatusMax;
                    db.SaveChanges();
                }
                else
                {
                    AF_OTfiling otfile = new AF_OTfiling();
                    otfile                 = (from c in db.AF_OTfiling where c.Status > -1 && c.OT_RefNo == otrequest.OT_RefNo && c.EmployeeNo == otrequest.EmployeeNo && c.OvertimeType == OTType select c).FirstOrDefault();
                    currentstatus          = otfile.Status + 1;
                    otfile.Status          = (otrequest.Approved == true) ? currentstatus : currentstatus - (currentstatus * 2);
                    db.Entry(otfile).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }

            if (stat == statmax)
            {
                SendTheMail(GetApproved[0].OT_RefNo);
            }


            #region update Approver Status
            string refno = GetApproved[0].OT_RefNo;
            string pos   = (ifalter == "alter")? "Alternative " + Position[currentstatus - 1] : Position[currentstatus - 1];
            M_Section_ApproverStatus approverstatus = (from c in db.M_Section_ApproverStatus
                                                       where c.RefNo == refno &&
                                                       c.EmployeeNo == user.UserName &&
                                                       c.Position == pos &&
                                                       c.OverTimeType == OTType
                                                       select c).FirstOrDefault();

            approverstatus.Approved        = 1;
            db.Entry(approverstatus).State = EntityState.Modified;
            db.SaveChanges();
            #endregion

            db.AF_EmailOTRequest(refno);
            return(Json(new { }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult SaveDTR(AF_DTRfiling Filing, string Reasons, string EmployeeNos, string DTRType, string concerns)
        {
            List <string> concernsList   = concerns.Split(',').ToList();
            List <string> ReasonsList    = Reasons.Split(',').ToList();
            List <string> EmployeeNosLis = EmployeeNos.Split(',').ToList();
            int           emploCounter   = 0;
            string        DTRRefNo       = helper.GenerateDTRRef();
            string        Section        = "";

            foreach (string reason in ReasonsList)
            {
                string       EmploNos = EmployeeNosLis[emploCounter];
                string       Concern  = concernsList[emploCounter];
                AF_DTRfiling dtrfile  = new AF_DTRfiling();
                dtrfile.DTR_RefNo   = DTRRefNo;
                dtrfile.BIPH_Agency = Filing.BIPH_Agency;
                dtrfile.EmployeeNo  = EmploNos;
                dtrfile.FileType    = Filing.FileType;
                dtrfile.Section     = (from c in db.M_Employee_CostCenter where c.EmployNo == EmploNos orderby c.ID descending select c.CostCenter_AMS).FirstOrDefault();
                Section             = (from c in db.M_Cost_Center_List where c.Cost_Center == dtrfile.Section orderby c.ID descending select c.GroupSection).FirstOrDefault();//otfile.Section;//dtrfile.Section;
                //dtrfile.Line_Team = 1;// (from c in db.M_Employee_Master_List where c.EmpNo == EmploNos select c.LineID).FirstOrDefault();
                dtrfile.OvertimeType = Filing.OvertimeType;
                dtrfile.DateFrom     = Filing.DateFrom.Date;
                dtrfile.DateTo       = Filing.DateTo.AddHours(23).AddMinutes(59).AddSeconds(59);
                dtrfile.OTin         = Filing.OTin;
                dtrfile.OTout        = Filing.OTout;
                dtrfile.Timein       = Filing.Timein;
                dtrfile.TimeOut      = Filing.TimeOut;
                dtrfile.Reason       = reason;
                dtrfile.Concerns     = Concern;
                dtrfile.Status       = 0;
                //if (EmploNos.Contains("BIPH"))
                //{
                dtrfile.EmployeeAccept = db.TT_GETTIME().FirstOrDefault();    //DateTime.Now;;
                //}
                if (DTRType == "HR")
                {
                    dtrfile.StatusMax = (Filing.OvertimeType == "SundayHoliday") ? 4 : 2;
                }
                else
                {
                    dtrfile.StatusMax = 1; //Supervisor only
                }
                dtrfile.CreateID   = user.UserName;
                dtrfile.CreateDate = DateTime.Now;
                dtrfile.UpdateID   = user.UserName;
                dtrfile.UpdateDate = DateTime.Now;
                try
                {
                    db.AF_DTRfiling.Add(dtrfile);
                    db.SaveChanges();
                }
                catch (Exception err) {
                    Error_Logs error = new Error_Logs();
                    error.PageModule = "Application Form - DTR";
                    error.ErrorLog   = err.Message;
                    error.DateLog    = DateTime.Now;
                    error.Username   = user.UserName;
                    db.Error_Logs.Add(error);
                    db.SaveChanges();
                }
                emploCounter++;
            }

            #region GET approver & Email

            List <M_Section_Approver> approver = (from c in db.M_Section_Approver
                                                  where c.Section == Section &&
                                                  c.Position != "GeneralManager" &&
                                                  c.Position != "FactoryGeneralManager"
                                                  select c).ToList();


            #endregion

            #region Generate OT Status
            foreach (M_Section_Approver approv in approver)
            {
                M_Section_ApproverStatus approverstat = new M_Section_ApproverStatus();
                approverstat.Position     = approv.Position;
                approverstat.EmployeeNo   = approv.EmployeeNo;
                approverstat.Section      = Section;
                approverstat.RefNo        = DTRRefNo;
                approverstat.Approved     = 0;
                approverstat.OverTimeType = Filing.OvertimeType;
                approverstat.CreateID     = user.UserName;
                approverstat.CreateDate   = DateTime.Now;
                approverstat.UpdateID     = user.UserName;
                approverstat.UpdateDate   = DateTime.Now;
                db.M_Section_ApproverStatus.Add(approverstat);
                db.SaveChanges();
            }

            #endregion
            return(Json(new { DTRRefNo = DTRRefNo }, JsonRequestBehavior.AllowGet));
        }
        public JsonResult ReadUploadedFile()
        {
            try {
                var                file         = Request.Files[0];
                int                fileSize     = file.ContentLength;
                string             fileName     = file.FileName;
                string             TodayRefno   = helper.GenerateOTRef();
                string             Section      = "";
                string             OTType       = "";
                List <AF_OTfiling> OTFilingList = new List <AF_OTfiling>();
                List <string>      Unregistered = new List <string>();
                using (var package = new ExcelPackage(file.InputStream))
                {
                    ExcelWorksheet worksheet         = package.Workbook.Worksheets[1];
                    int            noOfCol           = worksheet.Dimension.End.Column;
                    int            noOfRow           = worksheet.Dimension.End.Row;
                    int            endColumn         = worksheet.Dimension.Start.Column;
                    int            startColumn       = endColumn;
                    int            startRowForTable  = 16;
                    int            totalNoOfTableRow = 25;

                    #region Find Type
                    if (worksheet.Cells[12, 3].Value.ToString().ToLower().Contains("x"))
                    {
                        OTType = "SundayHoliday";
                    }
                    else if (worksheet.Cells[11, 6].Value.ToString().ToLower().Contains("x"))
                    {
                        OTType = "LegalHoliday";
                    }
                    else if (worksheet.Cells[12, 6].Value.ToString().ToLower().Contains("x"))
                    {
                        OTType = "SpecialHoliday";
                    }
                    else
                    {
                        OTType = "Regular";
                    }
                    #endregion


                    for (int x = 0; x < totalNoOfTableRow; x++)
                    {
                        string Empno = "";

                        try
                        {
                            Empno = worksheet.Cells[startRowForTable, 3].Value.ToString();
                            M_Employee_Master_List Employee = (from c in db.M_Employee_Master_List
                                                               where c.EmpNo == Empno
                                                               select c).FirstOrDefault();

                            if (Employee != null)
                            {
                                AF_OTfiling bemodify = (from c in db.AF_OTfiling where c.EmployeeNo == Employee.EmpNo && c.OT_RefNo == TodayRefno select c).FirstOrDefault();

                                if (bemodify == null)
                                {
                                    #region Creating via upload
                                    AF_OTfiling OTrequest = new AF_OTfiling();
                                    OTrequest.OT_RefNo    = TodayRefno;
                                    OTrequest.BIPH_Agency = Employee.Company;
                                    OTrequest.FileType    = 3;                                                                                                                           //Upload
                                    OTrequest.Section     = (from c in db.M_Employee_CostCenter where c.EmployNo == Empno orderby c.ID descending select c.CostCenter_AMS).FirstOrDefault();
                                    Section = (from c in db.M_Cost_Center_List where c.Cost_Center == OTrequest.Section orderby c.ID descending select c.GroupSection).FirstOrDefault(); //otfile.Section;

                                    OTrequest.EmployeeNo   = Employee.EmpNo;
                                    OTrequest.OvertimeType = OTType;
                                    OTrequest.DateFrom     = Convert.ToDateTime(worksheet.Cells[6, 9].Value);
                                    OTrequest.DateTo       = Convert.ToDateTime(worksheet.Cells[6, 9].Value);

                                    OTrequest.OTin  = worksheet.Cells[startRowForTable, 5].Value.ToString();
                                    OTrequest.OTout = worksheet.Cells[startRowForTable, 6].Value.ToString();

                                    OTrequest.Purpose   = worksheet.Cells[startRowForTable, 8].Value.ToString();
                                    OTrequest.Status    = 0;
                                    OTrequest.StatusMax = (OTrequest.OvertimeType == "SundayHoliday") ? 4 : 2;

                                    OTrequest.EmployeeAccept = db.TT_GETTIME().FirstOrDefault();

                                    OTrequest.CreateID   = user.UserName;
                                    OTrequest.CreateDate = DateTime.Now;;
                                    OTrequest.UpdateID   = user.UserName;
                                    OTrequest.UpdateDate = DateTime.Now;;

                                    try
                                    {
                                        db.AF_OTfiling.Add(OTrequest);
                                        db.SaveChanges();
                                    }
                                    catch (Exception err)
                                    {
                                        Error_Logs error = new Error_Logs();
                                        error.PageModule = "Application Form - OT Request";
                                        error.ErrorLog   = err.Message;
                                        error.DateLog    = db.TT_GETTIME().FirstOrDefault();//DateTime.Now;;
                                        error.Username   = user.UserName;
                                        db.Error_Logs.Add(error);
                                        db.SaveChanges();
                                    }
                                    #endregion
                                }
                                else
                                {
                                    #region modifying via upload
                                    //Section = Employee.CostCode;
                                    bemodify.OT_RefNo    = TodayRefno;
                                    bemodify.BIPH_Agency = Employee.Company;
                                    bemodify.FileType    = 3;                                                                                                                           //Upload
                                    bemodify.Section     = (from c in db.M_Employee_CostCenter where c.EmployNo == Empno orderby c.ID descending select c.CostCenter_AMS).FirstOrDefault();
                                    Section = (from c in db.M_Cost_Center_List where c.Cost_Center == bemodify.Section orderby c.ID descending select c.GroupSection).FirstOrDefault(); //otfile.Section;

                                    bemodify.EmployeeNo   = Employee.EmpNo;
                                    bemodify.OvertimeType = OTType;
                                    bemodify.DateFrom     = Convert.ToDateTime(worksheet.Cells[6, 8].Value);
                                    bemodify.DateTo       = Convert.ToDateTime(worksheet.Cells[6, 8].Value);
                                    bemodify.OTin         = worksheet.Cells[startRowForTable, 4].Value.ToString();
                                    bemodify.OTout        = worksheet.Cells[startRowForTable, 5].Value.ToString();
                                    bemodify.Purpose      = worksheet.Cells[startRowForTable, 7].Value.ToString();
                                    bemodify.Status       = 0;
                                    bemodify.StatusMax    = (bemodify.OvertimeType == "SundayHoliday") ? 4 : 2;

                                    bemodify.EmployeeAccept = db.TT_GETTIME().FirstOrDefault();

                                    bemodify.UpdateID   = user.UserName;
                                    bemodify.UpdateDate = DateTime.Now;;

                                    try
                                    {
                                        db.Entry(bemodify).State = EntityState.Modified;
                                        db.SaveChanges();
                                    }
                                    catch (Exception err)
                                    {
                                        Error_Logs error = new Error_Logs();
                                        error.PageModule = "Application Form - OT Request";
                                        error.ErrorLog   = err.Message;
                                        error.DateLog    = db.TT_GETTIME().FirstOrDefault();//DateTime.Now;;
                                        error.Username   = user.UserName;
                                        db.Error_Logs.Add(error);
                                        db.SaveChanges();
                                    }
                                    #endregion
                                }
                            }
                            else
                            {
                                if (Empno != "")
                                {
                                    Unregistered.Add(Empno);
                                }
                            }
                        }
                        catch (Exception err)
                        {
                            if (Empno != "")
                            {
                                Unregistered.Add(Empno);
                            }
                            Error_Logs error = new Error_Logs();
                            error.PageModule = "Application Form - OT Request";
                            error.ErrorLog   = err.Message;
                            error.DateLog    = db.TT_GETTIME().FirstOrDefault();//DateTime.Now;;
                            error.Username   = user.UserName;
                            db.Error_Logs.Add(error);
                            db.SaveChanges();
                            //return Json(new { Failed = "Failed" }, JsonRequestBehavior.AllowGet);
                        }

                        startRowForTable++;
                    }

                    M_Section_ApproverStatus checker = (from c in db.M_Section_ApproverStatus where c.RefNo == TodayRefno select c).FirstOrDefault();
                    if (checker == null)
                    {
                        #region GET approver & Email
                        //string SectionID = (from c in db.M_Cost_Center_List
                        //                    where c.Cost_Center == Section
                        //                    select c.ID).FirstOrDefault().ToString();
                        List <M_Section_Approver> approver = (from c in db.M_Section_Approver where c.Section == Section select c).ToList();


                        #endregion
                        #region Generate OT Status
                        foreach (M_Section_Approver approv in approver)
                        {
                            M_Section_ApproverStatus approverstat = new M_Section_ApproverStatus();
                            approverstat.Position     = approv.Position;
                            approverstat.EmployeeNo   = approv.EmployeeNo;
                            approverstat.Section      = Section;
                            approverstat.RefNo        = helper.GenerateOTRef();
                            approverstat.Approved     = 0;
                            approverstat.OverTimeType = OTType;
                            approverstat.CreateID     = user.UserName;
                            approverstat.CreateDate   = DateTime.Now;;
                            approverstat.UpdateID     = user.UserName;
                            approverstat.UpdateDate   = DateTime.Now;;
                            db.M_Section_ApproverStatus.Add(approverstat);
                            db.SaveChanges();
                        }

                        #endregion
                    }



                    return(Json(new { Unregistered = Unregistered, Failed = "" }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception err)
            {
                return(Json(new { Failed = "Failed" }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult SaveOT(AF_OTfiling Filing, string Purposes, string EmployeeNos)
        {
            try
            {
                List <string> PurposeList    = Purposes.Split(',').ToList();
                List <string> EmployeeNosLis = EmployeeNos.Split(',').ToList();
                int           emploCounter   = 0;
                string        OTRefnow       = helper.GenerateOTRef();
                //long SectionID = 0;
                string Section = "";
                foreach (string purpose in PurposeList)
                {
                    string      EmploNos = EmployeeNosLis[emploCounter];
                    AF_OTfiling otfile   = new AF_OTfiling();
                    otfile.OT_RefNo    = OTRefnow;
                    otfile.BIPH_Agency = Filing.BIPH_Agency;
                    otfile.EmployeeNo  = EmploNos;
                    otfile.FileType    = Filing.FileType;
                    long?Schedule_current = (from c in db.M_Employee_Master_List_Schedule where c.EmployeeNo == EmploNos orderby c.ID descending select c.ScheduleID).FirstOrDefault();

                    otfile.ScheduleID = Schedule_current;
                    otfile.Section    = (from c in db.M_Employee_CostCenter where c.EmployNo == EmploNos orderby c.ID descending select c.CostCenter_AMS).FirstOrDefault();
                    //SectionID = otfile.Section;
                    Section             = (from c in db.M_Cost_Center_List where c.Cost_Center == otfile.Section orderby c.ID descending select c.GroupSection).FirstOrDefault();//otfile.Section;
                    otfile.OvertimeType = Filing.OvertimeType;
                    otfile.DateFrom     = Filing.DateFrom.Date;
                    otfile.DateTo       = Filing.DateFrom.Date;
                    otfile.OTin         = Filing.OTin;
                    otfile.OTout        = Filing.OTout;
                    otfile.Purpose      = purpose;
                    otfile.Status       = 0;
                    otfile.StatusMax    = (otfile.OvertimeType == "SundayHoliday") ? 4 : 2;
                    //if (EmploNos.Contains("BIPH"))
                    //{
                    otfile.EmployeeAccept = db.TT_GETTIME().FirstOrDefault();    //DateTime.Now;;
                    //}
                    otfile.CreateID   = user.UserName;
                    otfile.CreateDate = DateTime.Now;
                    otfile.UpdateID   = user.UserName;
                    otfile.UpdateDate = DateTime.Now;;

                    try
                    {
                        db.AF_OTfiling.Add(otfile);
                        db.SaveChanges();
                    }
                    catch (Exception err)
                    {
                        Error_Logs error = new Error_Logs();
                        error.PageModule = "Application Form - OT Request";
                        error.ErrorLog   = err.Message;
                        error.DateLog    = db.TT_GETTIME().FirstOrDefault();//DateTime.Now;;
                        error.Username   = user.UserName;
                        db.Error_Logs.Add(error);
                        db.SaveChanges();
                    }
                    emploCounter++;
                }
                M_Section_ApproverStatus checker = (from c in db.M_Section_ApproverStatus where c.RefNo == OTRefnow && c.OverTimeType == Filing.OvertimeType select c).FirstOrDefault();
                if (checker == null)
                {
                    #region GET approver & Email
                    //string SectionID = (from c in db.M_Cost_Center_List
                    //                    where c.Cost_Center == Section
                    //                    select c.ID).FirstOrDefault().ToString();
                    List <M_Section_Approver> approver = (from c in db.M_Section_Approver where c.Section == Section select c).ToList();

                    #region EMAIL FUNCTION TRANSFER TO SERVER JOBS
                    //try
                    //{
                    //    db.AF_EmailOTRequest();
                    //}
                    //catch (Exception err)
                    //{
                    //    Error_Logs error = new Error_Logs();
                    //    error.PageModule = "Application Form - OT Request";
                    //    error.ErrorLog = err.Message;
                    //    error.DateLog = db.TT_GETTIME().FirstOrDefault();//DateTime.Now;;
                    //    error.Username = user.UserName;
                    //    db.Error_Logs.Add(error);
                    //    db.SaveChanges();
                    //}


                    //EmailApproverController email = new EmailApproverController();
                    ////M_Employee_Master_List getSupervisor = (from c in db.M_Employee_Master_List where c.EmpNo == approver.Supervisor select c).FirstOrDefault();
                    //email.sendMail("OT Approval", approver, OTRefnow, Session["emailpath"].ToString());
                    #endregion
                    #endregion

                    #region Generate OT Status
                    foreach (M_Section_Approver approv in approver)
                    {
                        M_Section_ApproverStatus approverstat = new M_Section_ApproverStatus();
                        approverstat.Position     = approv.Position;
                        approverstat.EmployeeNo   = approv.EmployeeNo;
                        approverstat.Section      = Section;
                        approverstat.RefNo        = OTRefnow;
                        approverstat.Approved     = 0;
                        approverstat.OverTimeType = Filing.OvertimeType;
                        approverstat.CreateID     = user.UserName;
                        approverstat.CreateDate   = DateTime.Now;;
                        approverstat.UpdateID     = user.UserName;
                        approverstat.UpdateDate   = DateTime.Now;;
                        db.M_Section_ApproverStatus.Add(approverstat);
                        db.SaveChanges();
                    }

                    #endregion
                }

                return(Json(new { OTRefnow = OTRefnow }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception err)
            {
                Error_Logs error = new Error_Logs();
                error.PageModule = "Application Form - OT Request";
                error.ErrorLog   = err.Message;
                error.DateLog    = db.TT_GETTIME().FirstOrDefault();//DateTime.Now;;
                error.Username   = user.UserName;
                db.Error_Logs.Add(error);
                db.SaveChanges();
                return(Json(new { OTRefnow = "" }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult ApprovedCS(List <AF_CSModel> GetApproved, string ifalter)
        {
            string[] Position = { "Supervisor", "Manager" };
            int      currentstatus = 0;
            int      stat = 0, statmax = 0;
            string   refno = GetApproved[0].CS_RefNo;

            foreach (AF_CSModel csrequest in GetApproved)
            {
                if (csrequest.Approved == true)
                {
                    AF_ChangeSchedulefiling csfile = new AF_ChangeSchedulefiling();
                    csfile        = (from c in db.AF_ChangeSchedulefiling where c.Status > -1 && c.CS_RefNo == csrequest.CS_RefNo && c.EmployeeNo == csrequest.EmployeeNo select c).FirstOrDefault();
                    currentstatus = csfile.Status + 1;
                    csfile.Status = (csrequest.Approved == true) ? currentstatus : currentstatus - (currentstatus * 2);

                    if (csfile.Status >= csfile.StatusMax)
                    {
                        csfile.Status = 2;
                    }
                    db.Entry(csfile).State = EntityState.Modified;
                    db.SaveChanges();

                    stat    = csfile.Status;
                    statmax = csfile.StatusMax;
                }
                else
                {
                    AF_ChangeSchedulefiling csfile = new AF_ChangeSchedulefiling();
                    csfile        = (from c in db.AF_ChangeSchedulefiling where c.Status > -1 && c.CS_RefNo == csrequest.CS_RefNo && c.EmployeeNo == csrequest.EmployeeNo select c).FirstOrDefault();
                    currentstatus = csfile.Status + 1;
                    csfile.Status = (csrequest.Approved == true) ? currentstatus : currentstatus - (currentstatus * 2);
                    if (csfile.Status >= csfile.StatusMax)
                    {
                        csfile.Status = 2;
                    }
                    db.Entry(csfile).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }

            #region update Approver Status

            //string pos = (ifalter == "alter") ? "Alternative " + Position[currentstatus] : Position[currentstatus - 1];
            M_Section_ApproverStatus approverstatus = (from c in db.M_Section_ApproverStatus
                                                       where c.RefNo == refno &&
                                                       c.EmployeeNo == user.UserName
                                                       //&& c.EmployeeNo_CSRequest == csrequest.EmployeeNo
                                                       //&& c.Position == pos
                                                       select c).FirstOrDefault();

            approverstatus.ApprovedDate    = db.TT_GETTIME().FirstOrDefault();
            approverstatus.Approved        = 1;
            db.Entry(approverstatus).State = EntityState.Modified;
            db.SaveChanges();


            #endregion

            if (stat == statmax)
            {
                db.AF_UpdateApprovedSchedule(refno);
                //SendTheMail(GetApproved[0].CS_RefNo);
            }
            db.AF_EmailCSRequest(refno);
            return(Json(new { }, JsonRequestBehavior.AllowGet));
        }