public IActionResult LeaveChangeTime(LeaveOpViewModel model)
        {
            var leave = new LeaveHelper(model);

            leave.dt3_ValueChanged();
            return(Json(leave));
        }
        public IActionResult LeaveChangeShift(LeaveOpViewModel model)
        {
            var leave = new LeaveHelper(model);

            leave.cb1_SelectedValueChanged();
            return(Json(leave));
        }
        public IActionResult LeaveUpdate(LeaveOpViewModel model)
        {
            //var m = new LeaveOpViewModel() { ucLeave = new UCLeaveViewModel(), EmpId = EmpId };
            //return View(m);
            var leave = new LeaveHelper(model);

            leave.Leave_Update();
            return(Json(leave));
        }
        public ActionResult Details(int Id, byte Btn)
        {
            //Btn: 1.Edit, 2.Cancel, 3.Break
            LeaveOpViewModel request = _hrUnitOfWork.LeaveRepository.GetLeaveOpReq(Id, Language);

            request.btn = Btn;

            ViewBag.CalcOptions = _hrUnitOfWork.LeaveRepository.GetLeaveType(request.TypeId); //for Calender
            ViewBag.Calender    = _hrUnitOfWork.LeaveRepository.GetHolidays(CompanyId);       //for Calender

            int MenuId = Request.QueryString["MenuId"] != null?int.Parse(Request.QueryString["MenuId"].ToString()) : 0;

            ViewBag.isSSMenu = _hrUnitOfWork.Repository <Model.Domain.Menu>().Where(a => a.Id == MenuId).Select(a => a.SSMenu).FirstOrDefault();

            return(View(request));
        }
        public async Task <IActionResult> LeaveUpdate(string EmpId, int SeqNo)
        {
            var emp_ = await _context.Tblemployee.Where(x => x.EmpId == EmpId).FirstOrDefaultAsync();

            var leave = await _context.Tblleave.Where(x => x.EmpId == EmpId && x.SeqNo == SeqNo).FirstOrDefaultAsync();

            ViewData["emp_nm"]       = emp_.EmpNm;
            ViewData["emp_inh_dt"]   = emp_.InhDt;
            ViewData["l_type_leave"] = await _context.Tbltypeleave.ToListAsync();

            ViewData["l_type_shift"] = await _context.Tblroster.ToListAsync();

            var m = new LeaveOpViewModel()
            {
                ucLeave = new UCLeaveViewModel(leave), EmpId = EmpId, SeqNo = SeqNo
            };

            return(View(m));
        }
        // GET: Admin/Tblleaves/Create
        public async Task <IActionResult> LeaveInsert(string EmpId)
        {
            var emp_ = await _context.Tblemployee.Where(x => x.EmpId == EmpId).FirstOrDefaultAsync();

            ViewData["emp_nm"]       = emp_.EmpNm;
            ViewData["emp_inh_dt"]   = emp_.InhDt;
            ViewData["l_type_leave"] = await _context.Tbltypeleave.ToListAsync();

            ViewData["l_type_shift"] = await _context.Tblroster.ToListAsync();

            var m = new LeaveOpViewModel()
            {
                ucLeave = new UCLeaveViewModel()
                {
                    STR_DT = DateTime.Now, END_DT = DateTime.Now
                }, EmpId = EmpId
            };

            return(View(m));
        }
        public LeaveHelper(LeaveOpViewModel model)
        {
            cb1 = model.ucLeave.SHI_ID;
            ck  = model.ucLeave.FULL_DT_BT;
            dt1 = model.ucLeave.STR_DT;
            dt2 = model.ucLeave.END_DT;
            dt3 = model.ucLeave.STR_TM != null?DateTime.ParseExact(model.ucLeave.STR_TM, "HH:mm", CultureInfo.InvariantCulture) : DateTime.Now;

            dt4 = model.ucLeave.END_TM != null?DateTime.ParseExact(model.ucLeave.END_TM, "HH:mm", CultureInfo.InvariantCulture) : DateTime.Now;

            txt_hr   = model.ucLeave.TOTAL_HOURS;
            txt_day  = model.ucLeave.TOTAL_DAYS;
            txt_h1   = model.ucLeave.HOU_DY == null ? "0": model.ucLeave.HOU_DY;
            txt_h    = model.ucLeave.HOU_DY == null ? "0" : model.ucLeave.HOU_DY;
            EMP_ID   = model.EmpId;
            TYP_ID   = model.ucLeave.TYP_LEA;
            INH_DT   = model.InhDt;
            USER_ID  = model.UserLogin;
            txt_note = model.ucLeave.NOT;
            cb       = model.ucLeave.TYP_LEA;
            LEA_SEQ  = model.SeqNo;
            STR_DT   = model.ucLeave.STR_DT_O;
            END_DT   = model.ucLeave.END_DT_O;
        }
        public ActionResult Details(LeaveOpViewModel model, OptionsViewModel moreInfo)
        {
            List <Error> errors = new List <Error>();

            if (ModelState.IsValid)
            {
                if (ServerValidationEnabled)
                {
                    errors = _hrUnitOfWork.CompanyRepository.CheckForm(new CheckParm
                    {
                        CompanyId    = CompanyId,
                        ObjectName   = "LeaveRequestForm",
                        TableName    = "LeaveRequests",
                        Columns      = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))),
                        ParentColumn = "CompanyId",
                        Culture      = Language
                    });

                    if (errors.Count() > 0)
                    {
                        foreach (var e in errors)
                        {
                            foreach (var errorMsg in e.errors)
                            {
                                ModelState.AddModelError(errorMsg.field, errorMsg.message);
                            }
                        }
                        return(Json(Models.Utils.ParseFormErrors(ModelState)));
                    }
                }
            }
            else
            {
                return(Json(Models.Utils.ParseFormErrors(ModelState)));
            }

            //Btn: 1.Edit, 2.Cancel, 3.Break
            string field = null;

            if (model.btn == 1 && model.EditedStartDate == null)
            {
                field = "EditedStartDate";
            }
            else if (model.btn == 2 && model.CancelReason == null)
            {
                field = "CancelReason";
            }
            else if (model.btn == 3 && model.BreakReturnDate == null)
            {
                field = "BreakReturnDate";
            }

            if (field != null)
            {
                ModelState.AddModelError(field, MsgUtils.Instance.Trls("Required"));
                return(Json(Models.Utils.ParseFormErrors(ModelState)));
            }

            LeaveRequest request = _hrUnitOfWork.LeaveRepository.Get(model.Id);

            byte version;

            byte.TryParse(Request.Form["version"], out version);
            string message = "OK";

            AutoMapperParm parms = new AutoMapperParm()
            {
                Source = model, Destination = request, Version = version, ObjectName = "LeaveRequest", Options = moreInfo, Transtype = TransType.Update
            };

            AutoMapper(parms);

            ///Btn: 1.Edit, 2.Cancel, 3.Break
            if (model.btn == 1)  //Edit
            {
                AddTrail(request.Id, "ActualStartDate", model.EditedStartDate.ToString(), request.ActualStartDate.ToString());
                AddTrail(request.Id, "ActualEndDate", model.EditedEndDate.ToString(), request.ActualEndDate.ToString());

                DateTime oldStartDate = request.ActualStartDate.GetValueOrDefault();
                request.ActualStartDate = model.EditedStartDate;
                request.ActualEndDate   = model.EditedEndDate;

                _hrUnitOfWork.LeaveRepository.AddEditLeaveTrans(request, oldStartDate);
            }
            else if (model.btn == 2) //Cancel
            {
                AddTrail(request.Id, "ApprovalStatus", MsgUtils.Instance.Trls("Cancel after accepted"), MsgUtils.Instance.Trls("Approved"));
                request.ApprovalStatus = 8;

                ///Cancel change assign state
                _hrUnitOfWork.EmployeeRepository.CancelLeaveAssignState(request, UserName, version, Language);
                ///Cancel LeaveTrans
                var msg = _hrUnitOfWork.LeaveRepository.AddCancelLeaveTrans(request, UserName, Language);
                if (msg.Length > 0)
                {
                    return(Json(msg));
                }
            }
            else if (model.btn == 3)  //Break
            {
                AddTrail(request.Id, "ActualEndDate", model.BreakEndDate.ToString(), request.ActualEndDate.ToString());
                AddTrail(request.Id, "ActualNofDays", model.BreakNofDays.ToString(), request.ActualNofDays.ToString());
                float DiffDays = request.ActualNofDays.Value - model.BreakNofDays.Value;

                request.ActualEndDate = model.BreakEndDate;
                request.ActualNofDays = model.BreakNofDays;
                request.ReturnDate    = model.BreakReturnDate;

                ///Brake Leave LeaveTrans
                _hrUnitOfWork.LeaveRepository.AddBreakLeaveTrans(request, DiffDays, UserName);
            }
            request.ModifiedUser = UserName;
            request.ModifiedTime = DateTime.Now;
            _hrUnitOfWork.LeaveRepository.Attach(request);
            _hrUnitOfWork.LeaveRepository.Entry(request).State = EntityState.Modified;

            var Errors = SaveChanges(Language);

            if (Errors.Count > 0)
            {
                message = Errors.First().errors.First().message;
            }

            return(Json(message));
        }