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); }
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)); }
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")); } }
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); }
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)); }
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)); }
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); }
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")); }
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); }
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); }
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); }
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()); }
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())); }
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); }
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()); }
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); }
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)); }
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); } }
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 }); }