// GET: LeaveResumptions/Create
        public ActionResult Create(int?id)
        {
            if (id == null)
            {
                return(HttpNotFound());
            }
            var application = db.LeaveApplications.Find(id);

            if (application == null)
            {
                return(HttpNotFound());
            }
            var model = new LeaveResumption();

            model.ApplyDate      = DateTime.Now;
            model.EmployeeId     = application.EmployeeId;
            model.EmployeeName   = application.EmployeeName;
            model.LeaveAppID     = application.LeaveAppID;
            model.StartDate      = application.StartDate;
            model.LeaveType      = application.LeaveType;
            model.ResumptionDate = DateTime.Now;
            model.Status         = LeaveResumption.LeaveResumptionStatus.Pending;
            model.Duration       = model.ResumptionDate.Day - model.StartDate.Day;
            return(View(model));
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            LeaveResumption leaveResumption = await db.LeaveResumptions.FindAsync(id);

            db.LeaveResumptions.Remove(leaveResumption);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> Edit([Bind(Include = "ID,LeaveAppID,EmployeeId,EmployeeName,StartDate,ResumptionDate,Duration,Status,ApplyDate,LeaveType")] LeaveResumption leaveResumption)
        {
            if (ModelState.IsValid)
            {
                var employee = _repo.GetEmployee(int.Parse(leaveResumption.EmployeeId));
                if (leaveResumption.Status == LeaveResumption.LeaveResumptionStatus.Approved)
                {
                    LeaveApplication leaveapplication = db.LeaveApplications.Find(leaveResumption.LeaveAppID);
                    if (leaveapplication.LeavePlanID != null)
                    {
                        ManageEmployeeLeave leaveplan = db.ManageEmployeeLeaves.Find(leaveapplication.LeavePlanID);
                        if (leaveplan.TotalLeaveAvailable == null)
                        {
                            leaveplan.TotalLeaveAvailable = leaveplan.LeaveLimit;
                        }
                        if (leaveplan.TotalLeaveTaken == null)
                        {
                            leaveplan.TotalLeaveTaken = 0;
                        }
                        leaveplan.TotalLeaveTaken     += leaveResumption.Duration;
                        leaveplan.TotalLeaveAvailable -= leaveResumption.Duration;
                    }
                    if (leaveapplication.TotalLeaveAvailable == null)
                    {
                        leaveapplication.TotalLeaveAvailable = leaveapplication.LeaveLimit;
                    }
                    if (leaveapplication.TotalLeaveTaken == null)
                    {
                        leaveapplication.TotalLeaveTaken = 0;
                    }
                    leaveapplication.TotalLeaveAvailable -= leaveResumption.Duration;
                    leaveapplication.TotalLeaveTaken     += leaveResumption.Duration;

                    string       FilePath = Server.MapPath("~/Assets/EmailTemplate/LeaveApproved.cshtml");
                    StreamReader str      = new StreamReader(FilePath);
                    string       MailText = str.ReadToEnd();
                    str.Close();

                    MailText      = MailText.Replace("[Date]", DateTime.Now.ToShortDateString());
                    MailText      = MailText.Replace("[StartDate]", leaveResumption.StartDate.ToShortDateString());
                    MailText      = MailText.Replace("[ResumptionDate]", leaveResumption.ResumptionDate.ToShortDateString());
                    MailText      = MailText.Replace("[Name]", employee.FullName);
                    MailText      = MailText.Replace("[HRName]", "Bolaji Fashola");
                    _emailhandler = new LeaveApplicationAcceptedEmail(MailText);
                    _emailhandler.SendEmail("*****@*****.**", "");
                }
                db.Entry(leaveResumption).State = EntityState.Modified;
                await db.SaveChangesAsync();

                //await Task.Delay(50);
                return(RedirectToAction("Index"));
            }
            return(View(leaveResumption));
        }
        public async Task <ActionResult> Create([Bind(Include = "ID,LeaveAppID,EmployeeId,EmployeeName,StartDate,ResumptionDate,Duration,Status,ApplyDate,LeaveType")] LeaveResumption leaveResumption)
        {
            if (ModelState.IsValid)
            {
                db.LeaveResumptions.Add(leaveResumption);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(leaveResumption));
        }
        // GET: LeaveResumptions/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LeaveResumption leaveResumption = await db.LeaveResumptions.FindAsync(id);

            if (leaveResumption == null)
            {
                return(HttpNotFound());
            }
            return(View(leaveResumption));
        }