private List <Leave> ListLeaves(LeaveCategories?category, LeaveStatuses?status, string employee, int page, string sort, string sortDir) { var categories = CreateListItems(typeof(LeaveCategories)); var statuses = CreateListItems(typeof(LeaveStatuses)); // Get selected Category. if (category.HasValue) { categories.Find(x => x.Text == category.Value.ToString()).Selected = true; } // Get selected Status. if (status.HasValue) { statuses.Find(x => x.Text == status.Value.ToString()).Selected = true; } ViewBag.CategoryList = categories; ViewBag.StatusList = statuses; int totalRowCount = 0; List <Leave> leaves = new List <Leave>(); int startRowIndex = (page - 1) * MAXIMUM_ROWS; var upc = new LeaveProcessComponent(); leaves = upc.ListLeavesByEmployee(MAXIMUM_ROWS, startRowIndex, string.Format("{0} {1}", sort, sortDir), employee, category, status, out totalRowCount); ViewBag.TotalRowCount = totalRowCount; return(leaves); }
public void DuplicateApplyTest() { _leave = CreateLeave("Unit Test: Apply with overlapping date."); LeaveProcessComponent upc = new LeaveProcessComponent(); // 1. Apply a new leave. _leave = upc.Apply(_leave); Assert.AreEqual(_leave.Status, LeaveStatuses.Pending, "Failed to apply new leave."); // Keep the previous workflow instance. Guid correlationId = _leave.CorrelationID; try { // 2. This will cause exception to occur. upc.Apply(_leave); } catch (ApplicationException ex) { if (ex.Message != "Date range is overlapping with another leave.") { throw ex; } } // 3. Cancel it. // Need to do this, otherwise, there will be an orphaned workflow instance. _leave.CorrelationID = correlationId; upc.Cancel(_leave); _leave = upc.GetLeaveById(_leave.LeaveID); Assert.AreEqual(_leave.Status, LeaveStatuses.Cancelled, "Failed to cancel leave."); }
public ActionResult Reject(Leave leave) { if (ModelState.IsValid) { var upc = new LeaveProcessComponent(); leave = upc.Reject(leave); } return(GetJsonResult(leave)); }
public ActionResult Approve(Leave leave) { if (ModelState.IsValid) { var upc = new LeaveProcessComponent(); leave = upc.Approve(leave); _clients.All.LeaveUpdated(leave); } return(GetJsonResult(leave)); }
public ActionResult Cancel(Leave leave) { if (ModelState.IsValid) { var upc = new LeaveProcessComponent(); leave = upc.Cancel(leave); _clients.All.LeaveCancelled(leave); } return(GetJsonResult(leave)); }
public void ApplyThenRejectTest() { _leave = CreateLeave("Unit Test: Apply Then Reject"); LeaveProcessComponent upc = new LeaveProcessComponent(); // 1. Apply a new leave. _leave = upc.Apply(_leave); Assert.AreEqual(_leave.Status, LeaveStatuses.Pending, "Failed to apply new leave."); // 2. Reject it. upc.Reject(_leave); _leave = upc.GetLeaveById(_leave.LeaveID); Assert.AreEqual(_leave.Status, LeaveStatuses.Rejected, "Failed to reject leave."); }
public ActionResult Index(Leave leave) { ViewBag.Categories = GetCategories(); // Validate date. if (leave.StartDate > leave.EndDate) { ModelState.AddModelError("DateError", "Start date cannot be greater than End date."); } else { // Validate duration. var totalDays = leave.EndDate.Subtract(leave.StartDate).Days + 1; if (leave.Duration > totalDays) { ModelState.AddModelError("DurationError", "Duration cannot be greater than the number of days in selected date range."); } } leave.Status = LeaveStatuses.Pending; if (ModelState.IsValid) { try { var upc = new LeaveProcessComponent(); leave = upc.Apply(leave); _clients.All.LeaveApplied(leave); } catch (ApplicationException ex) { ModelState.AddModelError(string.Empty, ex.Message); } } return(View(leave)); }