/// <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> /// ListLogsByLeave business method. /// </summary> /// <param name="leaveID">A leaveID value.</param> /// <returns>Returns a List<LeaveStatusLog> object.</returns> public List <LeaveStatusLog> ListLogsByLeave(long leaveID) { // Data access component declarations. LeaveStatusLogDAC leaveStatusLogDAC = new LeaveStatusLogDAC(); // Step 1 - Calling SelectByLeave on LeaveStatusLogDAC. List <LeaveStatusLog> result = leaveStatusLogDAC.SelectByLeave(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(); } }