/// <summary> /// Updates work event information in database. /// </summary> /// <param name="eventDetails">Work event details.</param> /// <returns>True if information was updated; false, otherwise.</returns> public override bool UpdateEvent(WorkEventDetails eventDetails) { using (SqlConnection connection = new SqlConnection(this.ConnectionString)) { connection.Open(); SqlTransaction transaction = connection.BeginTransaction(); SqlCommand command = connection.CreateCommand(); command.Transaction = transaction; command.CommandText = string.Format( "UPDATE {0} SET Name=@Name, BeginTime=@BeginTime, EndTime=@EndTime, Duration=@Duration, UserID=@UserID, ProjectID=@ProjectID, WorkCategoryID=@WorkCategoryID, UptimeEventTypeID=@UptimeEventTypeID WHERE ID=@ID", DBEventsTableName); command.Parameters.Add("@ID", SqlDbType.Int).Value = eventDetails.ID; command.Parameters.Add("@Name", SqlDbType.NVarChar).Value = eventDetails.Name; command.Parameters.Add("@BeginTime", SqlDbType.DateTime).Value = eventDetails.BeginTime; command.Parameters.Add("@EndTime", SqlDbType.DateTime).Value = eventDetails.EndTime; command.Parameters.Add("@Duration", SqlDbType.Int).Value = eventDetails.Duration; command.Parameters.Add("@UserID", SqlDbType.Int).Value = eventDetails.UserID; command.Parameters.Add("@ProjectID", SqlDbType.Int).Value = eventDetails.ProjectID; command.Parameters.Add("@WorkCategoryID", SqlDbType.Int).Value = eventDetails.WorkCategoryID; command.Parameters.Add("@UptimeEventTypeID", SqlDbType.Int).Value = eventDetails.UptimeEventTypeID; try { bool result = (ExecuteNonQuery(command) == 1); if (result) { transaction.Commit(); DeleteEventIfExist(eventDetails.UserID, eventDetails.BeginTime); } else transaction.Rollback(); return result; } catch { transaction.Rollback(); return false; } } }
/// <summary> /// Creates new work event in database. /// </summary> /// <param name="eventDetails">Work event details.</param> /// <returns>ID of new database record.</returns> public override int CreateEvent(WorkEventDetails eventDetails) { int id = -1; using (SqlConnection connection = new SqlConnection(this.ConnectionString)) { connection.Open(); SqlTransaction transaction = connection.BeginTransaction(); SqlCommand command = connection.CreateCommand(); command.Transaction = transaction; command.CommandText = string.Format( "INSERT INTO {0} (Name, BeginTime, EndTime, Duration, UserID, ProjectID, WorkCategoryID, UptimeEventTypeID) VALUES (@Name, @BeginTime, @EndTime, @Duration, @UserID, @ProjectID, @WorkCategoryID, @UptimeEventTypeID) SELECT @@IDENTITY", DBEventsTableName); command.Parameters.Add("@Name", SqlDbType.NVarChar).Value = eventDetails.Name; command.Parameters.Add("@BeginTime", SqlDbType.DateTime).Value = eventDetails.BeginTime; command.Parameters.Add("@EndTime", SqlDbType.DateTime).Value = eventDetails.EndTime; command.Parameters.Add("@Duration", SqlDbType.Int).Value = eventDetails.Duration; command.Parameters.Add("@UserID", SqlDbType.Int).Value = eventDetails.UserID; command.Parameters.Add("@ProjectID", SqlDbType.Int).Value = eventDetails.ProjectID; command.Parameters.Add("@WorkCategoryID", SqlDbType.Int).Value = eventDetails.WorkCategoryID; command.Parameters.Add("@UptimeEventTypeID", SqlDbType.Int).Value = eventDetails.UptimeEventTypeID; try { id = Convert.ToInt32(ExecuteScalar(command)); transaction.Commit(); DeleteEventIfExist(eventDetails.UserID, eventDetails.BeginTime); } catch { transaction.Rollback(); } } return id; }
/// <summary> /// Creates work event details from data reader. /// </summary> /// <param name="reader">Data reader.</param> /// <returns>Work event details.</returns> protected virtual WorkEventDetails GetDetailsFromReader(IDataReader reader) { WorkEventDetails details = new WorkEventDetails(); details.ID = (int)reader["ID"]; details.Name = (string)reader["Name"]; details.BeginTime = (DateTime)reader["BeginTime"]; details.EndTime = (DateTime)reader["EndTime"]; details.Duration = (int)reader["Duration"]; details.UserID = (int)reader["UserID"]; details.ProjectID = (int)reader["ProjectID"]; details.WorkCategoryID = (int)reader["WorkCategoryID"]; details.UptimeEventTypeID = (int)reader["UptimeEventTypeID"]; return details; }