/// <summary> /// Updates the repair status properties of the <paramref name="dvirDefect"/> using properties of the <paramref name="dbDVIRDefectUpdate"/>. /// </summary> /// <param name="dvirDefect">The <see cref="DVIRDefect"/> to be updated.</param> /// <param name="dbDVIRDefectUpdate">The <see cref="DbDVIRDefectUpdate"/> from which to obtain the property values for the <paramref name="dvirDefect"/> update.</param> /// <returns></returns> bool UpdateDVIRDefectRepairStatus(DVIRDefect dvirDefect, DbDVIRDefectUpdate dbDVIRDefectUpdate) { MethodBase methodBase = MethodBase.GetCurrentMethod(); logger.Trace($"Begin {methodBase.ReflectedType.Name}.{methodBase.Name}"); // Check whether the DbDVIRDefectUpdate repair status properties are populated. if (dbDVIRDefectUpdate.RepairDateTime == null && dbDVIRDefectUpdate.RepairStatus == null && dbDVIRDefectUpdate.RepairUserId == null) { // No repair status update. return(false); } // Proceed only if the DVIRDefect's RepairStatus has not already been set. if (dvirDefect.RepairStatus != null && dvirDefect.RepairStatus != RepairStatusType.NotRepaired) { throw new ArgumentException($"RepairStatus of the DVIRDefect has already been set and cannot be changed."); } // Ensure all repair status properties have values. if (dbDVIRDefectUpdate.RepairDateTime == null || dbDVIRDefectUpdate.RepairStatus == null || dbDVIRDefectUpdate.RepairUserId == null) { throw new ArgumentException($"One or more related properties (RepairDateTime, RepairStatus, or RepairUserId) of the DbDVIRDefectUpdate object are null."); } var updateRepairStatusType = dbDVIRDefectUpdate.RepairStatus switch { nameof(RepairStatusType.NotNecessary) => RepairStatusType.NotNecessary, nameof(RepairStatusType.Repaired) => RepairStatusType.Repaired, _ => throw new ArgumentException($"Invalid RepairStatus value. RepairStatus must be set to either 'Repaired' or 'NotNecessary'."), }; // Update the repair status. var updateRepairUser = new User { Id = Id.Create(dbDVIRDefectUpdate.RepairUserId) }; dvirDefect.RepairDateTime = dbDVIRDefectUpdate.RepairDateTime; dvirDefect.RepairStatus = updateRepairStatusType; dvirDefect.RepairUser = updateRepairUser; logger.Trace($"End {methodBase.ReflectedType.Name}.{methodBase.Name}"); return(true); }
/// <summary> /// Adds a <see cref="DefectRemark"/> to the <paramref name="dvirDefect"/> using properties of the <paramref name="dbDVIRDefectUpdate"/>. /// </summary> /// <param name="dvirDefect">The <see cref="DVIRDefect"/> to which a <see cref="DefectRemark"/> is to be added.</param> /// <param name="dbDVIRDefectUpdate">The <see cref="DbDVIRDefectUpdate"/> from which to obtain the property values for the <see cref="DefectRemark"/> that is to be added to the <paramref name="dvirDefect"/>.</param> /// <returns></returns> bool AddDefectRemark(DVIRDefect dvirDefect, DbDVIRDefectUpdate dbDVIRDefectUpdate) { MethodBase methodBase = MethodBase.GetCurrentMethod(); logger.Trace($"Begin {methodBase.ReflectedType.Name}.{methodBase.Name}"); // Check whether the DbDVIRDefectUpdate includes a remark to be added. if (dbDVIRDefectUpdate.Remark == null && dbDVIRDefectUpdate.RemarkDateTime == null && dbDVIRDefectUpdate.RemarkUserId == null) { // No remark to add. return(false); } // Ensure all remark-related properties have values. if (dbDVIRDefectUpdate.Remark == null || dbDVIRDefectUpdate.RemarkDateTime == null || dbDVIRDefectUpdate.RemarkUserId == null) { throw new ArgumentException($"Cannot add DefectRemark to DVIRDefect because one or more DefectRemark-related properties (Remark, RemarkDateTime, or RemarkUserId) of the DbDVIRDefectUpdate object are null."); } // Add the remark. DefectRemark defectRemark = new() { User = new User { Id = Id.Create(dbDVIRDefectUpdate.RemarkUserId) }, DateTime = dbDVIRDefectUpdate.RemarkDateTime, Remark = dbDVIRDefectUpdate.Remark }; if (dvirDefect.DefectRemarks == null) { dvirDefect.DefectRemarks = new List <DefectRemark>(); } dvirDefect.DefectRemarks.Add(defectRemark); logger.Trace($"End {methodBase.ReflectedType.Name}.{methodBase.Name}"); return(true); }
/// <summary> /// Deletes a <see cref="DbDVIRDefectUpdate"/> entity from the database. /// </summary> /// <param name="connectionInfo">The database connection information.</param> /// <param name="dbDVIRDefectUpdate">The <see cref="DbDVIRDefectUpdate"/> entity to be deleted.</param> /// <param name="commandTimeout">The number of seconds before command execution timeout.</param> /// <returns></returns> public static async Task <bool> DeleteAsync(ConnectionInfo connectionInfo, DbDVIRDefectUpdate dbDVIRDefectUpdate, int commandTimeout) { return(await new DbDVIRDefectUpdateRepository().DeleteAsync(connectionInfo, dbDVIRDefectUpdate, commandTimeout)); }