/// <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); }
private static LeaveStatusLog CreateLog(Leave leave) { LeaveStatusLog log = new LeaveStatusLog(); log.Date = DateTime.Now; log.LeaveID = leave.LeaveID; log.Status = leave.Status; return(log); }
/// <summary> /// Inserts a new row in the LeaveStatusLogs table. /// </summary> /// <param name="leaveStatusLog">A LeaveStatusLog object.</param> /// <returns>An updated LeaveStatusLog object.</returns> public LeaveStatusLog Create(LeaveStatusLog leaveStatusLog) { using (var db = new DbContext(CONNECTION_NAME)) { db.Set <LeaveStatusLog>().Add(leaveStatusLog); db.SaveChanges(); return(leaveStatusLog); } }
/// <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> /// Inserts a new row in the LeaveStatusLogs table. /// </summary> /// <param name="leaveStatusLog">A LeaveStatusLog object.</param> /// <returns>An updated LeaveStatusLog object.</returns> public LeaveStatusLog Create(LeaveStatusLog leaveStatusLog) { const string SQL_STATEMENT = "INSERT INTO dbo.LeaveStatusLogs ([LeaveID], [Status], [Date]) " + "VALUES(@LeaveID, @Status, @Date); SELECT SCOPE_IDENTITY();"; // Connect to database. Database db = DatabaseFactory.CreateDatabase(CONNECTION_NAME); using (DbCommand cmd = db.GetSqlStringCommand(SQL_STATEMENT)) { // Set parameter values. db.AddInParameter(cmd, "@LeaveID", DbType.Int64, leaveStatusLog.LeaveID); db.AddInParameter(cmd, "@Status", DbType.Byte, leaveStatusLog.Status); db.AddInParameter(cmd, "@Date", DbType.DateTime, leaveStatusLog.Date); // Get the primary key value. leaveStatusLog.LogID = Convert.ToInt64(db.ExecuteScalar(cmd)); } return(leaveStatusLog); }
/// <summary> /// Conditionally retrieves one or more rows from the LeaveStatusLogs table. /// </summary> /// <param name="leaveID">A leaveID value.</param> /// <returns>A collection of LeaveStatusLog objects.</returns> public List <LeaveStatusLog> SelectByLeave(long leaveID) { const string SQL_STATEMENT = "SELECT [LogID], [LeaveID], [Status], [Date] " + "FROM dbo.LeaveStatusLogs " + "WHERE [LeaveID]=@LeaveID " + "ORDER BY [Date] DESC"; List <LeaveStatusLog> result = new List <LeaveStatusLog>(); // Connect to database. Database db = DatabaseFactory.CreateDatabase(CONNECTION_NAME); using (DbCommand cmd = db.GetSqlStringCommand(SQL_STATEMENT)) { db.AddInParameter(cmd, "@LeaveID", DbType.Int64, leaveID); using (IDataReader dr = db.ExecuteReader(cmd)) { while (dr.Read()) { // Create a new LeaveStatusLog LeaveStatusLog leaveStatusLog = new LeaveStatusLog(); // Read values. leaveStatusLog.LogID = base.GetDataValue <long>(dr, "LogID"); leaveStatusLog.LeaveID = base.GetDataValue <long>(dr, "LeaveID"); leaveStatusLog.Status = base.GetDataValue <LeaveStatuses>(dr, "Status"); leaveStatusLog.Date = base.GetDataValue <DateTime>(dr, "Date"); // Add to List. result.Add(leaveStatusLog); } } } return(result); }