Exemple #1
0
        private List <DepartmentManagerLeaveRequestViewModel> mapLRToDepManViewModel(Dictionary <LeaveRequestInfo, LeaveRequestDescription> leaveRequests)
        {
            List <DepartmentManagerLeaveRequestViewModel> viewModelList = new List <DepartmentManagerLeaveRequestViewModel>();

            foreach (KeyValuePair <LeaveRequestInfo, LeaveRequestDescription> pair in leaveRequests)
            {
                LeaveRequestInfo        lri = pair.Key;
                LeaveRequestDescription lrd = pair.Value;

                DepartmentManagerLeaveRequestViewModel viewModel = new DepartmentManagerLeaveRequestViewModel()
                {
                    AllDayEvent             = lrd.AllDayEvent,
                    DepartmentManager       = lrd.DepartmentManager,
                    DepartmentManagerStatus = lrd.DepartmentManagerStatus,
                    Employee    = lri.Employee,
                    EndTime     = lrd.EndTime,
                    Description = lrd.Description,
                    LeaveReason = lrd.LeaveReason,
                    StartTime   = lrd.StartTime,
                    DepartmentManagerComment = lrd.DepartmentManagerComment,
                    LeaveRequestID           = lri.LeaveRequestInfoID
                };

                viewModelList.Add(viewModel);
            }

            return(viewModelList);
        }
Exemple #2
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            LeaveRequestInfo              reqInfo   = db.LeaveRequestInfo.Find(id);
            LeaveRequestDescription       reqDes    = getLatestDescription(reqInfo, db);
            EmployeeLeaveRequestViewModel viewModel = mapLeaveRequestToViewModel(reqInfo, reqDes);

            SelectList deliveryManagers   = getEmployeeByRoleName("Delivery Manager");
            SelectList departmentManagers = getEmployeeByRoleName("Department Manager");

            ViewBag.departmentManagerID = departmentManagers;
            ViewBag.deliveryManagerID   = deliveryManagers;

            ViewBag.employeeID    = new SelectList(db.Employees, "employeeID", "employeeName");
            ViewBag.leaveReasonID = new SelectList(db.LeaveReasons, "leaveReasonID", "leaveReasonName");

            if (reqInfo == null)
            {
                return(HttpNotFound());
            }
            return(View(viewModel));
        }
Exemple #3
0
        public ActionResult ProcessRequest(int id, FormCollection collection)
        {
            try
            {
                LeaveRequestInfo        lri = db.LeaveRequestInfo.Find(id);
                LeaveRequestDescription lrd = getLatestDescription(lri);

                string description = Convert.ToString(collection["deliveryManagerComment"]);
                string status      = Convert.ToString(collection["deliveryManagerStatusID"]);
                lrd.DeliveryManagerComment = description;

                lrd.DeliveryManagerStatus = db.RequestStatus.Find(Convert.ToInt32(status));
                db.SaveChanges();

                int employeeID = db.LeaveRequestInfo.Find(id).Employee.EmployeeID;
                if (!lrd.DeliveryManagerStatus.RequestStatusName.Equals("Pending"))
                {
                    sendMailToEmployee(db.LeaveRequestInfo.Find(id).Employee.EmployeeID);
                }
                if (lrd.DeliveryManagerStatus.RequestStatusName.Equals("Approved"))
                {
                    sendMailToDepartmentManager(lri, lrd);
                }


                return(RedirectToAction("Index"));
            }
            catch
            {
                return(RedirectToAction("ProcessRequest"));
            }
        }
Exemple #4
0
        private List <DeliveryManagerLeaveRequestViewModel> mapLeaveRequestsToDelManViewModel(Dictionary <LeaveRequestInfo, LeaveRequestDescription> leaveRequests)
        {
            List <DeliveryManagerLeaveRequestViewModel> viewModel = new List <DeliveryManagerLeaveRequestViewModel>();

            foreach (KeyValuePair <LeaveRequestInfo, LeaveRequestDescription> pair in leaveRequests)
            {
                LeaveRequestInfo        lri = pair.Key;
                LeaveRequestDescription lrd = pair.Value;
                if (lrd.DeliveryManagerStatus.RequestStatusName.Equals("Pending"))
                {
                    viewModel.Add(new DeliveryManagerLeaveRequestViewModel
                    {
                        AllDayEvent            = lrd.AllDayEvent,
                        DeliveryManager        = lrd.DeliveryManager,
                        DeliveryManagerComment = lrd.DeliveryManagerComment,
                        DeliveryManagerStatus  = lrd.DeliveryManagerStatus,
                        Description            = lrd.Description,
                        Employee           = lri.Employee,
                        EndTime            = lrd.EndTime,
                        LeaveReason        = lrd.LeaveReason,
                        StartTime          = lrd.StartTime,
                        LeaveRequestInfoID = lri.LeaveRequestInfoID
                    });
                }
            }
            return(viewModel);
        }
Exemple #5
0
        public ActionResult ProcessRequest(int id)
        {
            LeaveRequestInfo        reqInfo = db.LeaveRequestInfo.Find(id);
            LeaveRequestDescription reqDes  = EmployeeLeaveRequestViewModelsController.getLatestDescription(reqInfo, db);
            DepartmentManagerLeaveRequestViewModel viewModel = new DepartmentManagerLeaveRequestViewModel()
            {
                AllDayEvent             = reqDes.AllDayEvent,
                DepartmentManager       = reqDes.DepartmentManager,
                DepartmentManagerStatus = reqDes.DepartmentManagerStatus,
                Employee    = reqInfo.Employee,
                EndTime     = reqDes.EndTime,
                Description = reqDes.Description,
                LeaveReason = reqDes.LeaveReason,
                StartTime   = reqDes.StartTime,
                DepartmentManagerComment = reqDes.DepartmentManagerComment,
                LeaveRequestID           = reqInfo.LeaveRequestInfoID
            };

            ViewBag.departmentManagerStatusID = new SelectList(db.RequestStatus, "requestStatusID", "requestStatusName", GetRequestStatusByName(reqDes.DepartmentManagerStatus.RequestStatusName).RequestStatusID);
            ViewData["employeeName"]          = reqInfo.Employee.EmployeeName;
            ViewData["startTime"]             = reqDes.StartTime;
            ViewData["endTime"]     = reqDes.EndTime;
            ViewData["allDayEvent"] = reqDes.AllDayEvent;


            return(View("DepartmentManagerProcessRequest", viewModel));
        }
Exemple #6
0
        public ActionResult Edit([Bind(Include = "leaveRequestID,employeeName,deliveryManagerName,departmentManagerName,allDayEvent,startTime,endTime,leaveReasonID,Description,deliveryManagerID,departmentManagerID")] EmployeeLeaveRequestViewModel employeeLeaveRequestViewModel)
        {
            if (!serverValidation(employeeLeaveRequestViewModel))
            {
                ViewBag.leaveReasonID = new SelectList(db.LeaveReasons, "leaveReasonID", "leaveReasonName");
                return(View(employeeLeaveRequestViewModel));
            }

            LeaveRequestInfo        leaveRequestInfo           = db.LeaveRequestInfo.Find(employeeLeaveRequestViewModel.LeaveRequestID);
            LeaveRequestDescription leaveRequestDesc           = getLatestDescription(leaveRequestInfo, db);
            LeaveRequestDescription newLeaveRequestDescription = mapViewModelToLeaveRequestDesc(employeeLeaveRequestViewModel, leaveRequestInfo);

            if (ModelState.IsValid)
            {
                db.LeaveRequestDescription.Add(newLeaveRequestDescription);
                db.SaveChanges();


                if (employeeLeaveRequestViewModel.DeliveryManagerName.Equals(leaveRequestDesc.DeliveryManager.EmployeeName))
                {
                    sendMailToDelManRequestUpdated(leaveRequestInfo, newLeaveRequestDescription);
                }
                else
                {
                    sendMailToDeliveryManager(leaveRequestInfo, newLeaveRequestDescription);
                }

                return(RedirectToAction("Index"));
            }
            return(View(employeeLeaveRequestViewModel));
        }
Exemple #7
0
        private LeaveRequestDescription mapViewModelToLeaveRequestDesc(EmployeeLeaveRequestViewModel leaveRequestViewModel, LeaveRequestInfo newLeaveRequest)
        {
            var delMan  = getEmployeeByName(leaveRequestViewModel.DeliveryManagerName);   //db.Employees.Find(leaveRequestViewModel.deliveryManagerID);
            var depMan  = getEmployeeByName(leaveRequestViewModel.DepartmentManagerName); //db.Employees.Find(leaveRequestViewModel.departmentManagerID);
            var lreason = db.LeaveReasons.Find(leaveRequestViewModel.LeaveReasonID);

            RequestStatus initStatus = GetRequestStatusByName("Pending");

            LeaveRequestDescription lrDescription = new LeaveRequestDescription()
            {
                AllDayEvent              = leaveRequestViewModel.AllDayEvent,
                StartTime                = leaveRequestViewModel.StartTime,
                EndTime                  = leaveRequestViewModel.EndTime,
                LeaveReason              = lreason,
                Description              = leaveRequestViewModel.Description,
                DeliveryManager          = delMan,
                DeliveryManagerComment   = "",
                DepartmentManager        = depMan,
                DepartmentManagerComment = "",
                DepartmentManagerStatus  = initStatus,
                DeliveryManagerStatus    = initStatus,
                LeaveRequestInfo         = newLeaveRequest,
                CreateDate               = DateTime.Now,
                UpdateDate               = DateTime.Now
            };

            return(lrDescription);
        }
Exemple #8
0
        public ActionResult printPDF(int?id)
        {
            LeaveRequestInfo        lri = db.LeaveRequestInfo.Find(id);
            LeaveRequestDescription lrd = getLatestDescription(lri, db);
            string tmp = ReplacePdfForm(lri, lrd);

            return(File(@tmp, "application/pdf", lri.Employee.EmployeeName + " " + DateTime.Now + ".pdf"));
        }
Exemple #9
0
        private void sendMailToDelManRequestUpdated(LeaveRequestInfo info, LeaveRequestDescription desc)
        {
            Employee employee = db.Employees.Single(e => e.EmployeeID == desc.DeliveryManager.EmployeeID);
            string   email    = employee.EmployeeEmail;
            string   subject  = "Request Updated";
            string   HTMLBody = getHTMLEmailForRequestUpdate(info.Employee.EmployeeName, info.LeaveRequestInfoID);

            sendMailUsingDBSettings(db, employee.EmployeeEmail, subject, HTMLBody);
        }
Exemple #10
0
        private void sendMailToDepartmentManager(LeaveRequestInfo info, LeaveRequestDescription desc)
        {
            Employee employee           = db.Employees.Single(e => e.EmployeeID == desc.DepartmentManager.EmployeeID);
            string   email              = employee.EmployeeEmail;
            string   subject            = "New Leave Request";
            string   depManagerHTMLBody = getHTMLEmailForDepManager(info, desc);

            EmployeeLeaveRequestViewModelsController.sendMailUsingDBSettings(db, email, subject, depManagerHTMLBody);
        }
Exemple #11
0
        public static Dictionary <LeaveRequestInfo, LeaveRequestDescription> getAllLeaveRequests(LeaveManagerContext db)
        {
            Dictionary <LeaveRequestInfo, LeaveRequestDescription> leaveRequests = new Dictionary <LeaveRequestInfo, LeaveRequestDescription>();

            foreach (LeaveRequestInfo lri in db.LeaveRequestInfo)
            {
                LeaveRequestDescription latestDesc = getLatestDescription(lri, db);
                leaveRequests.Add(lri, latestDesc);
            }
            return(leaveRequests);
        }
Exemple #12
0
        public ActionResult ProcessRequest(int id)
        {
            LeaveRequestInfo        reqInfo = db.LeaveRequestInfo.Find(id);
            LeaveRequestDescription reqDes  = getLatestDescription(reqInfo);

            ViewData["EmployeeName"]        = reqInfo.Employee.EmployeeName;
            ViewData["allDay"]              = reqDes.AllDayEvent ? "YES" : "NO";
            ViewData["startDate"]           = reqDes.AllDayEvent ? reqDes.StartTime.ToShortDateString() : reqDes.StartTime.ToString();
            ViewData["endDate"]             = reqDes.AllDayEvent ? reqDes.EndTime.ToShortDateString() : reqDes.EndTime.ToString();
            ViewData["leaveReason"]         = reqDes.LeaveReason.LeaveReasonName;
            ViewData["description"]         = reqDes.Description;
            ViewBag.deliveryManagerStatusID = new SelectList(db.RequestStatus, "requestStatusID", "requestStatusName", GetRequestStatusByName(reqDes.DeliveryManagerStatus.RequestStatusName).RequestStatusID);

            return(View());
        }
Exemple #13
0
        public ActionResult Index()
        {
            List <String> roles = (List <String>)Session["roles"];
            List <EmployeeLeaveRequestViewModel> requestViewModelList            = new List <EmployeeLeaveRequestViewModel>();
            Dictionary <LeaveRequestInfo, LeaveRequestDescription> leaveRequests = new Dictionary <LeaveRequestInfo, LeaveRequestDescription>();

            if (roles == null)
            {
                return(RedirectToAction("Index", "Login"));
            }

            foreach (string role in roles)
            {
                if (role.Equals("Super User"))
                {
                    leaveRequests = getAllLeaveRequests(db);
                }
            }
            if (leaveRequests.Count == 0)
            {
                leaveRequests = getLRForCurrentUser();
            }
            foreach (KeyValuePair <LeaveRequestInfo, LeaveRequestDescription> pair in leaveRequests)
            {
                LeaveRequestInfo        reqInfo = pair.Key;
                LeaveRequestDescription reqDesc = pair.Value;

                EmployeeLeaveRequestViewModel viewModel = new EmployeeLeaveRequestViewModel()
                {
                    AllDayEvent             = reqDesc.AllDayEvent,
                    DeliveryManager         = reqDesc.DeliveryManager,
                    DeliveryManagerStatus   = reqDesc.DeliveryManagerStatus,
                    DepartmentManager       = reqDesc.DepartmentManager,
                    DepartmentManagerStatus = reqDesc.DepartmentManagerStatus,
                    Description             = reqDesc.Description,
                    Employee                 = reqInfo.Employee,
                    EndTime                  = reqDesc.EndTime,
                    LeaveReason              = reqDesc.LeaveReason,
                    LeaveRequestID           = reqInfo.LeaveRequestInfoID,
                    StartTime                = reqDesc.StartTime,
                    DepartmentManagerComment = reqDesc.DepartmentManagerComment,
                    DeliveryManagerComment   = reqDesc.DeliveryManagerComment
                };

                requestViewModelList.Add(viewModel);
            }
            return(View(requestViewModelList.AsQueryable()));
        }
Exemple #14
0
        private Dictionary <LeaveRequestInfo, LeaveRequestDescription> getLRForCurrentUser()
        {
            Dictionary <LeaveRequestInfo, LeaveRequestDescription> leaveRequests = new Dictionary <LeaveRequestInfo, LeaveRequestDescription>();

            Employee emp = (Employee)Session["user"];
            var      e   = from l in db.LeaveRequestInfo
                           where l.Employee.EmployeeID == emp.EmployeeID
                           select l;

            foreach (LeaveRequestInfo lri in e)
            {
                LeaveRequestDescription lrd = getLatestDescription(lri, db);
                leaveRequests.Add(lri, lrd);
            }

            return(leaveRequests);
        }
Exemple #15
0
        public ActionResult ProcessRequest([Bind(Include = "leaveRequestID,departmentManagerComment,departmentManagerStatusID")] DepartmentManagerLeaveRequestViewModel departmentManagerLeaveRequestViewModel)
        {
            if (ModelState.IsValid)
            {
                LeaveRequestInfo        requestToUpdate = db.LeaveRequestInfo.Find(departmentManagerLeaveRequestViewModel.LeaveRequestID);
                LeaveRequestDescription descToUpdate    = EmployeeLeaveRequestViewModelsController.getLatestDescription(requestToUpdate, db);
                descToUpdate.DepartmentManagerComment = departmentManagerLeaveRequestViewModel.DepartmentManagerComment;
                descToUpdate.DepartmentManagerStatus  = db.RequestStatus.Find(departmentManagerLeaveRequestViewModel.DepartmentManagerStatusID);
                db.SaveChanges();

                if (!descToUpdate.DepartmentManagerStatus.RequestStatusName.Equals("Pending"))
                {
                    sendMailToEmployee(requestToUpdate.Employee.EmployeeID);
                }
                return(RedirectToAction("Index"));
            }

            return(View());
        }
Exemple #16
0
        private string getHTMLEmailForDepManager(LeaveRequestInfo info, LeaveRequestDescription desc)
        {
            StreamReader reader = new StreamReader(Server.MapPath("~/Content/MailTemplate.html"));
            string       email  = reader.ReadToEnd();

            string notHeader   = "You have new leave request";
            string textHeader  = "";
            string textMessage = "You have recieved new leave request from:  <i style=\"color: green\">" + info.Employee.EmployeeName + "</i> Approved by delivery manager:  <i style=\"color: #FF8000\">" + desc.DeliveryManager.EmployeeName + "</i><br/>";
            string buttonText  = "Go to request";

            string buttonLink = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath + "DepartmentManagerLeaveRequestViewModels/ProcessRequest/" + info.LeaveRequestInfoID;

            email = email.Replace("[NotificationHeader]", notHeader);
            email = email.Replace("[TextHeader]", textHeader);
            email = email.Replace("[TextMessage]", textMessage);
            email = email.Replace("[ButtonText]", buttonText);
            email = email.Replace("[ButtonLink]", buttonLink);

            return(email);
        }
Exemple #17
0
        public ActionResult Create([Bind(Include = "leaveRequestID,employeeName,deliveryManagerName,departmentManagerName,allDayEvent,startTime,endTime,leaveReasonID,Description,deliveryManagerID,departmentManagerID")] EmployeeLeaveRequestViewModel employeeLeaveRequestViewModel)
        {
            if (!serverValidation(employeeLeaveRequestViewModel))
            {
                ViewBag.leaveReasonID = new SelectList(db.LeaveReasons, "leaveReasonID", "leaveReasonName");
                return(View(employeeLeaveRequestViewModel));
            }

            LeaveRequestInfo        newLeaveRequest     = mapViewModelToLeaveRequestInfo(employeeLeaveRequestViewModel);
            LeaveRequestDescription newLeaveRequestDesc = mapViewModelToLeaveRequestDesc(employeeLeaveRequestViewModel, newLeaveRequest);

            if (ModelState.IsValid)
            {
                db.LeaveRequestInfo.Add(newLeaveRequest);
                db.LeaveRequestDescription.Add(newLeaveRequestDesc);
                db.SaveChanges();

                sendMailToDeliveryManager(newLeaveRequest, newLeaveRequestDesc);


                return(RedirectToAction("Index"));
            }
            return(View(employeeLeaveRequestViewModel));
        }
Exemple #18
0
        public static string ReplacePdfForm(LeaveRequestInfo info, LeaveRequestDescription desc)
        {
            string dt = DateTime.Now.ToString().Replace('/', ' ').Replace(':', ' ');
            // string fileNameNew = System.AppDomain.CurrentDomain.BaseDirectory +@"\Resources\\"+info.Employee.EmployeeName+" "+dt+".pdf".Replace(' ', '_');

            string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\LeaveManagerPDF\";

            bool exists = Directory.Exists(path);

            if (!exists)
            {
                Directory.CreateDirectory(path);
            }


            string fileNameNew = path + info.Employee.EmployeeName + " " + dt + ".pdf".Replace(' ', '_');

            // using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
            using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
            {
                // Open existing PDF
                var pdfReader = new PdfReader(Properties.Resources.LeaveRequestTemplatePDF);

                // PdfStamper, which will create
                var stamper = new PdfStamper(pdfReader, newFileStream);

                var form = stamper.AcroFields;
                form.GenerateAppearances = true;
                var fieldKeys = form.Fields.Keys;


                //setting font size and setting field text
                form.SetFieldProperty("Employee", "textsize", 8.0f, null);
                form.SetField("Employee", info.Employee.EmployeeName);

                form.SetFieldProperty("AllDayEvent", "textsize", 8.0f, null);
                form.SetField("AllDayEvent", desc.AllDayEvent ? "YES" : "NO");

                form.SetFieldProperty("StartTime", "textsize", 8.0f, null);
                form.SetField("StartTime", desc.AllDayEvent ? desc.StartTime.ToShortDateString() : desc.StartTime.ToString());

                form.SetFieldProperty("EndTime", "textsize", 8.0f, null);
                form.SetField("EndTime", desc.AllDayEvent ? desc.EndTime.ToShortDateString() : desc.EndTime.ToString());


                form.SetFieldProperty("LeaveReason", "textsize", 8.0f, null);
                form.SetField("LeaveReason", desc.LeaveReason.LeaveReasonName);

                form.SetFieldProperty("LeaveDescription", "textsize", 8.0f, null);
                form.SetField("LeaveDescription", desc.Description);

                form.SetFieldProperty("DeliveryManager", "textsize", 8.0f, null);
                form.SetField("DeliveryManager", desc.DeliveryManager.EmployeeName);

                form.SetFieldProperty("DeliveryManagerComment", "textsize", 8.0f, null);
                form.SetField("DeliveryManagerComment", desc.DeliveryManagerComment);

                form.SetFieldProperty("DepartmentManager", "textsize", 8.0f, null);
                form.SetField("DepartmentManager", desc.DepartmentManager.EmployeeName);

                form.SetFieldProperty("DepartmentManagerComment", "textsize", 8.0f, null);
                form.SetField("DepartmentManagerComment", desc.DepartmentManagerComment);

                form.SetFieldProperty("CreateDate", "textsize", 8.0f, null);
                form.SetField("CreateDate", desc.CreateDate.ToString());


                form.SetFieldProperty("EmployeeSignature", "textsize", 8.0f, null);
                form.SetField("EmployeeSignature", info.Employee.EmployeeName);

                form.SetFieldProperty("DeliveryManagerSignature", "textsize", 8.0f, null);
                form.SetField("DeliveryManagerSignature", desc.DeliveryManager.EmployeeName);


                form.SetFieldProperty("DepartmentManagerSignature", "textsize", 8.0f, null);
                form.SetField("DepartmentManagerSignature", desc.DepartmentManager.EmployeeName);

                form.SetFieldProperty("Date", "textsize", 8.0f, null);
                form.SetField("Date", DateTime.Now.ToShortDateString());

                // "Flatten" the form so it wont be editable/usable anymore
                stamper.FormFlattening = true;

                stamper.Close();
                pdfReader.Close();
                return(fileNameNew);
            }
        }
Exemple #19
0
 private EmployeeLeaveRequestViewModel mapLeaveRequestToViewModel(LeaveRequestInfo reqInfo, LeaveRequestDescription reqDes)
 {
     return(new EmployeeLeaveRequestViewModel()
     {
         AllDayEvent = reqDes.AllDayEvent,
         DeliveryManager = reqDes.DeliveryManager,
         DeliveryManagerComment = reqDes.DeliveryManagerComment,
         DeliveryManagerID = reqDes.DeliveryManager.EmployeeID,
         DeliveryManagerName = reqDes.DeliveryManager.EmployeeName,
         DeliveryManagerStatus = reqDes.DeliveryManagerStatus,
         DepartmentManager = reqDes.DepartmentManager,
         EmployeeName = reqInfo.Employee.EmployeeName,
         Employee = reqInfo.Employee,
         EmployeeID = reqInfo.Employee.EmployeeID,
         DepartmentManagerComment = reqDes.DepartmentManagerComment,
         DepartmentManagerID = reqDes.DepartmentManager.EmployeeID,
         DepartmentManagerName = reqDes.DepartmentManager.EmployeeName,
         DepartmentManagerStatus = reqDes.DepartmentManagerStatus,
         Description = reqDes.Description,
         EndTime = reqDes.EndTime,
         LeaveReason = reqDes.LeaveReason,
         LeaveReasonID = reqDes.LeaveReason.LeaveReasonID,
         LeaveRequestID = reqDes.LeaveRequestInfo.LeaveRequestInfoID,
         StartTime = reqDes.StartTime
     });
 }