/// <summary> /// Apply business method. /// </summary> /// <param name="leave">A leave value.</param> /// <returns>Returns a Leave object.</returns> public Leave Apply(Leave leave) { leave.Status = LeaveStatuses.Pending; leave.DateSubmitted = DateTime.Now; leave.IsCompleted = false; LeaveStatusLog log = CreateLog(leave); // Data access component declarations. var leaveDAC = new LeaveDAC(); var leaveStatusLogDAC = new LeaveStatusLogDAC(); Validations.ValidateLeaveDates(leave); // Check for overlapping leaves. if (leaveDAC.IsOverlap(leave)) { throw new ApplicationException("Date range is overlapping with another leave."); } using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { // Step 1 - Calling Create on LeaveDAC. leaveDAC.Create(leave); // Step 2 - Calling Create on LeaveStatusLogDAC. log.LeaveID = leave.LeaveID; leaveStatusLogDAC.Create(log); ts.Complete(); } return(leave); }
/// <summary> /// GetLeaveById business method. /// </summary> /// <param name="leaveID">A leaveID value.</param> /// <returns>Returns a Leave object.</returns> public Leave GetLeaveById(long leaveID) { Leave result = default(Leave); // Data access component declarations. var leaveDAC = new LeaveDAC(); // Step 1 - Calling SelectById on LeaveDAC. result = leaveDAC.SelectById(leaveID); return(result); }
/// <summary> /// Apply business method. /// </summary> /// <param name="leave">A leave value.</param> /// <returns>Returns a Leave object.</returns> public Leave Apply(Leave leave) { leave.Status = LeaveStatuses.Pending; leave.DateSubmitted = DateTime.Now; leave.IsCompleted = false; LeaveStatusLog log = CreateLog(leave); // Data access component declarations. var leaveDAC = new LeaveDAC(); var leaveStatusLogDAC = new LeaveStatusLogDAC(); // Activate Data Annotation validation. var context = new ValidationContext(leave); var validationErrors = new List <ValidationResult>(); Validator.TryValidateObject(leave, context, validationErrors, true); if (validationErrors.Count > 0) { throw new ApplicationException(validationErrors[0].ErrorMessage); } // Check for overlapping leaves. if (leaveDAC.IsOverlap(leave)) { throw new ApplicationException("Date range is overlapping with another leave."); } using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { // Step 1 - Calling Create on LeaveDAC. leaveDAC.Create(leave); // Step 2 - Calling Create on LeaveStatusLogDAC. log.LeaveID = leave.LeaveID; leaveStatusLogDAC.Create(log); ts.Complete(); } return(leave); }
private void UpdateStatus(Leave leave) { LeaveStatusLog log = CreateLog(leave); // Data access component declarations. var leaveDAC = new LeaveDAC(); var leaveStatusLogDAC = new LeaveStatusLogDAC(); using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { // Step 1 - Calling UpdateById on LeaveDAC. leaveDAC.UpdateStatus(leave); // Step 2 - Calling Create on LeaveStatusLogDAC. leaveStatusLogDAC.Create(log); ts.Complete(); } }
/// <summary> /// ListLeavesByEmployee business method. /// </summary> /// <param name="startRowIndex">A startRowIndex value.</param> /// <param name="maximumRows">A maximumRows value.</param> /// <param name="sortExpression">A sortExpression value.</param> /// <param name="employee">A employee value.</param> /// <param name="category">A category value.</param> /// <param name="status">A status value.</param> /// <returns>Returns a List<Leave> object.</returns> public List <Leave> ListLeavesByEmployee(int maximumRows, int startRowIndex, string sortExpression, string employee, LeaveCategories?category, LeaveStatuses?status, out int totalRowCount) { List <Leave> result = default(List <Leave>); if (string.IsNullOrWhiteSpace(sortExpression)) { sortExpression = "DateSubmitted DESC"; } // Data access component declarations. var leaveDAC = new LeaveDAC(); // Step 1 - Calling Select on LeaveDAC. result = leaveDAC.Select(maximumRows, startRowIndex, sortExpression, employee, category, status); // Step 2 - Get count. totalRowCount = leaveDAC.Count(employee, category, status); return(result); }