public ActionResult CancelledRefNo(List <string> RefNo)
 {
     #region Old
     //string REFNO = RefNo[0];
     //List<AF_DTRfiling> list = (from c in db.AF_DTRfiling
     //                           where c.DTR_RefNo == REFNO
     //                           select c).ToList();
     //foreach (AF_DTRfiling request in list)
     //{
     //    request.Status = -10;
     //    request.UpdateDate = DateTime.Now;
     //    request.UpdateID = user.UserName;
     //    db.Entry(request).State = EntityState.Modified;
     //    db.SaveChanges();
     //}
     #endregion
     List <string> EmpnoCannotCancel = new List <string>();
     foreach (string data in RefNo)
     {
         long         ID         = Convert.ToInt64(data.Replace("DTR_here_", ""));
         AF_DTRfiling dtrrequest = (from c in db.AF_DTRfiling where c.ID == ID select c).FirstOrDefault();
         if (dtrrequest.CreateID == user.UserName)
         {
             dtrrequest.Status          = -10;
             db.Entry(dtrrequest).State = EntityState.Modified;
             db.SaveChanges();
         }
         else
         {
             EmpnoCannotCancel.Add(dtrrequest.EmployeeNo);
         }
     }
     return(Json(new { EmpnoCannotCancel = EmpnoCannotCancel }, JsonRequestBehavior.AllowGet));
 }
        public ActionResult RejectedDTR(List <AF_DTRModel> GetApproved, string ifalter)
        {
            string[] Position      = { "", "Supervisor", "Manager", "GeneralManager" };
            int      currentstatus = 0;

            foreach (AF_DTRModel dtrrequest in GetApproved)
            {
                if (dtrrequest.Approved == true)
                {
                    AF_DTRfiling otfile = new AF_DTRfiling();
                    otfile                 = (from c in db.AF_DTRfiling where c.DTR_RefNo == dtrrequest.DTR_RefNo && c.EmployeeNo == dtrrequest.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].DTR_RefNo;
            //string pos = (ifalter == "alter") ? "Alternative " + Position[currentstatus] : Position[currentstatus];
            //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;
            //db.Entry(approverstatus).State = EntityState.Modified;
            //db.SaveChanges();

            #endregion

            return(Json(new { }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult VerifyUser(string RefNo)
        {
            bool         releasebtn = false;
            AF_DTRfiling getStatus  = (from c in db.AF_DTRfiling where c.DTR_RefNo == RefNo orderby c.Status descending select c).FirstOrDefault();

            List <M_Section_ApproverStatus> approver = (from c in db.M_Section_ApproverStatus where c.RefNo == RefNo select c).ToList();

            switch (getStatus.Status)
            {
            case 0:
                approver = approver.Where(x => x.Position == "Supervisor").ToList();
                break;

            case 1:
                approver = approver.Where(x => x.Position == "Manager").ToList();
                break;

            case 2:
                approver = approver.Where(x => x.Position == "GeneralManager").ToList();
                break;
            }
            List <string> userlist = new List <string>();

            foreach (M_Section_ApproverStatus username in approver)
            {
                userlist.Add(username.EmployeeNo);
            }
            //Checker if allowed to approved yet
            var dateAndTime = DateTime.Now;
            var date        = dateAndTime.Date;
            var Requestdate = getStatus.CreateDate.Date;

            if (userlist.Contains(user.UserName) && Requestdate < date)
            {
                releasebtn = true;
            }

            return(Json(new { releasebtn = releasebtn }, 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));
        }
        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.GenerateDTRRef();
                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  = 12;
                    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_DTRfiling bemodify = (from c in db.AF_DTRfiling where c.EmployeeNo == Employee.EmpNo && c.DTR_RefNo == TodayRefno select c).FirstOrDefault();

                                if (bemodify == null)
                                {
                                    #region Creating via upload
                                    //Section = user.Section;//Employee.Section;
                                    AF_DTRfiling DTRrequest = new AF_DTRfiling();
                                    DTRrequest.DTR_RefNo   = TodayRefno;
                                    DTRrequest.BIPH_Agency = Employee.Company;
                                    DTRrequest.FileType    = 3;                                                                                                                           //Upload
                                    DTRrequest.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 == DTRrequest.Section orderby c.ID descending select c.GroupSection).FirstOrDefault(); //otfile.Section;

                                    DTRrequest.EmployeeNo   = Employee.EmpNo;
                                    DTRrequest.OvertimeType = "";
                                    DTRrequest.DateFrom     = Convert.ToDateTime(worksheet.Cells[startRowForTable, 6].Value);
                                    DTRrequest.DateTo       = Convert.ToDateTime(worksheet.Cells[startRowForTable, 7].Value);
                                    DTRrequest.Timein       = worksheet.Cells[startRowForTable, 8].Value.ToString();
                                    DTRrequest.TimeOut      = worksheet.Cells[startRowForTable, 9].Value.ToString();
                                    DTRrequest.OTin         = "";
                                    DTRrequest.OTout        = "";
                                    //if (Employee.EmpNo.Contains("BIPH"))
                                    //{
                                    DTRrequest.EmployeeAccept = db.TT_GETTIME().FirstOrDefault();    //DateTime.Now;
                                    //}

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

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

                                    try
                                    {
                                        db.AF_DTRfiling.Add(DTRrequest);
                                        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.DTR_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 = "";
                                    bemodify.DateFrom     = Convert.ToDateTime(worksheet.Cells[startRowForTable, 6].Value);
                                    bemodify.DateTo       = Convert.ToDateTime(worksheet.Cells[startRowForTable, 7].Value);
                                    bemodify.Timein       = worksheet.Cells[startRowForTable, 8].Value.ToString();
                                    bemodify.TimeOut      = worksheet.Cells[startRowForTable, 9].Value.ToString();
                                    bemodify.OTin         = "";
                                    bemodify.OTout        = "";
                                    //if (Employee.EmpNo.Contains("BIPH"))
                                    //{
                                    bemodify.EmployeeAccept = db.TT_GETTIME().FirstOrDefault();    //DateTime.Now;
                                    //}
                                    bemodify.Reason     = worksheet.Cells[startRowForTable, 5].Value.ToString();
                                    bemodify.Status     = 0;
                                    bemodify.StatusMax  = 2;
                                    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 - DTR 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.Section == 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        = TodayRefno;
                            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));
            }
        }