protected DomainResponse(ValidationMessageCollection validationDetails) { if (validationDetails == null) validationDetails = new ValidationMessageCollection(); ValidationDetails = validationDetails; }
private ValidationMessageCollection OnUpdateFailedFunc(DbUpdateConcurrencyException dbUpdateEx, UpdateDepartment.CommandModel commandModel, ref byte[] rowVersion) { var validationMessages = new ValidationMessageCollection(); var entry = dbUpdateEx.Entries.Single(); var databaseEntry = entry.GetDatabaseValues(); if (databaseEntry == null) { validationMessages.Add(string.Empty, "Unable to save changes. The department was deleted by another user."); return validationMessages; } var databaseValues = (Department)databaseEntry.ToObject(); rowVersion = databaseValues.RowVersion; if (databaseValues.Name != commandModel.Name) validationMessages.Add(nameof(commandModel.Name), "Current value: " + databaseValues.Name); if (databaseValues.Budget != commandModel.Budget) validationMessages.Add(nameof(commandModel.Budget), "Current value: " + string.Format("{0:c}", databaseValues.Budget)); if (databaseValues.StartDate != commandModel.StartDate) validationMessages.Add(nameof(commandModel.StartDate), "Current value: " + string.Format("{0:d}", databaseValues.StartDate)); if (databaseValues.InstructorID != commandModel.InstructorID) validationMessages.Add(nameof(commandModel.InstructorID), "Current value: " + _Repository.GetEntity<Instructor>(p => p.ID == databaseValues.InstructorID.Value).FullName); validationMessages.Add(string.Empty, "The record you attempted to edit " + "was modified by another user after you got the original value. The " + "edit operation was canceled and the current values in the database " + "have been displayed. If you still want to edit this record, click " + "the Save button again. Otherwise click the Back to List hyperlink."); return validationMessages; }
public static void AddRange(this ModelStateDictionary modelState, ValidationMessageCollection messageCollection) { modelState.Clear(); foreach (var msg in messageCollection.AllValidationMessages) { modelState.AddModelError(msg.PropertyName, msg.ErrorMessage); } }
public static void AddRange(this ModelStateDictionary modelState, ValidationMessageCollection messageCollection) { modelState.Clear(); foreach (var msg in messageCollection.AllValidationMessages) { modelState.AddModelError(msg.PropertyName, msg.ErrorMessage); } }
protected DomainResponse(ValidationMessageCollection validationDetails) { if (validationDetails == null) { validationDetails = new ValidationMessageCollection(); } ValidationDetails = validationDetails; }
public ValidationMessageCollection ValidatePayout(double withdrawAmount) { var messages = new ValidationMessageCollection(); if (withdrawAmount > Balance) { messages.AddError("Not enough funds on your account"); } return(messages); }
public static ValidationMessageCollection ValidateMake(MakeBookingRequest request) { var validationMessages = new ValidationMessageCollection(); if (!request.StartDate.HasValue || request.StartDate.Value == default(DateTime)) { validationMessages.AddError("StartDate", "Start date is required."); } else { if (request.StartDate.Value < DateTime.Now.Date) { validationMessages.AddError("StartDate", "Start date must not be in the past."); } } if (!request.EndDate.HasValue || request.EndDate.Value == default(DateTime)) { validationMessages.AddError("EndDate", "End date is required."); } else { if (request.EndDate.Value < DateTime.Now) { validationMessages.AddError("EndDate", "End date must not be in the past."); } } if (request.StartDate.HasValue && request.EndDate.HasValue) { if (request.EndDate.Value < request.StartDate.Value) { validationMessages.AddError("EndDate", "End date must not be before start date."); } } if (request.Vehicle == null) { validationMessages.AddError("Vehicle", "Vehicle is required."); } if (request.Customer == null) { validationMessages.AddError("Customer", "Customer is required."); } if (request.Vehicle != null && request.StartDate.HasValue && request.EndDate.HasValue && request.Vehicle.GetConflictingBookings(request.StartDate.Value, request.EndDate.Value).Any()) { validationMessages.AddError("", "Booking conflicts with existing bookings."); } return(validationMessages); }
public static ValidationMessageCollection ValidateBook(Employee employee, DateTime start, DateTime end, string description) { var messages = new ValidationMessageCollection(); var length = (end - start).Days + 1; if (length > employee.RemainingHolidays) { messages.AddError("Length of holiday exceeds employee's remaining holidays."); } return(messages); }
public ValidationFault(ValidationMessageCollection validationMessages) { _messages = new List <ValidationFaultMessage>(); foreach (ValidationMessage validationMessage in validationMessages) { _messages.Add(new ValidationFaultMessage() { Field = validationMessage.Field, Text = validationMessage.Text }); } }
public static ValidationMessageCollection ValidateRegister(RegisterCustomerRequest request) { var validationMessages = new ValidationMessageCollection(); //Only a selection of fields validated for demo purposes. var rxPostCode = new Regex( @"^(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))$"); if (string.IsNullOrEmpty(request.PostCode)) { validationMessages.AddError("PostCode", "Post code not supplied"); } else { if (!rxPostCode.IsMatch(request.PostCode)) { validationMessages.AddError("PostCode", "Post code is not valid."); } } if (string.IsNullOrEmpty(request.EmailAddress)) { validationMessages.AddError("EmailAddress", "Email not supplied"); } else if (request.EmailAddress.Length > 50) { validationMessages.AddError("EmailAddress", "Email must be 50 characters or less."); } else { var rxNonStrictEmail = new Regex(@"[A-Za-z0-9\.-_\+]+@[A-Za-z0-9\.-_\+]+"); if (!rxNonStrictEmail.IsMatch(request.EmailAddress)) { validationMessages.AddError("EmailAddress", "Email is not valid."); } } if (request.ApplicationUser == null) { validationMessages.AddError("ApplicationUser", "ApplicationUser not supplied"); } if (request.CustomerRole == null) { validationMessages.AddError("CustomerRole", "CustomerRole not supplied"); } return(validationMessages); }
public override ValidationResult Validate(ActionType actionType) { var validationResult = base.Validate(actionType); if (actionType == ActionType.Delete) { return validationResult; } var collection = new ValidationMessageCollection(); collection.AddRange(validationResult.Messages); collection.AddEmptyMessage(PhoneNumber, "PhoneNumber"); return collection.ToValidationResult(); }
/// <summary> /// Gets the validation messages (a collection) associated with the specified key, usually a property name. /// </summary> public ValidationMessageCollection this[string key] { get { lock (sync) { if (!items.ContainsKey(key)) { items[key] = new ValidationMessageCollection(); items[key].CollectionChanged += (x, y) => OnErrorsChanged(EventArgs.Empty); } return items[key]; } } }
public override ValidationResult Validate(ActionType actionType) { var collection = new ValidationMessageCollection(); collection.AddEmptyMessage(Code, "Code"); if (actionType != ActionType.Delete) { collection.AddEmptyMessage(Name, "Name"); } if (actionType == ActionType.Add) { //TODO: db check for unique code. } return collection.ToValidationResult(); }
/// <summary> /// Gets the validation messages (a collection) associated with the specified key, usually a property name. /// </summary> public ValidationMessageCollection this[string key] { get { lock (sync) { if (!items.ContainsKey(key)) { items[key] = new ValidationMessageCollection(); items[key].CollectionChanged += (x, y) => OnErrorsChanged(EventArgs.Empty); } return(items[key]); } } }
/// <summary> /// Validates the specified property name. /// </summary> /// <param name="propertyName">Name of the property.</param> /// <param name="value">The value.</param> /// <param name="validationContext">The validation context.</param> /// <returns> /// The list of validation messages. /// </returns> public override ValidationMessageCollection Validate(string propertyName, object value, string validationContext) { ValidationMessageCollection messages = base.Validate(propertyName, value, validationContext); if (propertyName == nameof(this.Price) && value is decimal) { if ((decimal)value != this.Items.Sum(x => x.Price)) { messages.Add(new ValidationMessage("MustEqualSum", "The order price must match the sum of the item prices.", Array.Empty <object>(), this, propertyName)); } } return(messages); }
private static ValidationMessageCollection ValidateBookUpdate( Employee employee, DateTime start, DateTime end, Holiday holidayBeingUpdated) { var startDateTime = start.Date + new TimeSpan(0, 9, 0, 0); var endDateTime = end + new TimeSpan(0, 17, 0, 0); var validationMessages = new ValidationMessageCollection(); //todo: three employees from same department cannot be off at same time? return(validationMessages); }
public static ValidationMessageCollection Save( this IRepository repository, EntityStateWrapperContainer entityContainer, Func <DbUpdateConcurrencyException, ValidationMessageCollection> dbUpdateConcurrencyExceptionFunc = null, Func <RetryLimitExceededException, ValidationMessageCollection> retryLimitExceededExceptionFunc = null) { try { entityContainer.UnitsOfWork().ToList().ForEach(uow => { UpdateStates(repository, uow); repository.Save(); }); return(new ValidationMessageCollection()); } catch (DbUpdateConcurrencyException dbUpdateEx) { Logger.Warn(dbUpdateEx, dbUpdateEx.Message); if (dbUpdateConcurrencyExceptionFunc != null) { return(dbUpdateConcurrencyExceptionFunc(dbUpdateEx)); } var validationDetails = new ValidationMessageCollection(); validationDetails.Add(new ValidationMessage(string.Empty, dbUpdateEx.ToString())); return(validationDetails); } catch (RetryLimitExceededException rleEx) { Logger.Error(rleEx, rleEx.Message); if (retryLimitExceededExceptionFunc != null) { return(retryLimitExceededExceptionFunc(rleEx)); } var validationDetails = new ValidationMessageCollection(); validationDetails.Add(new ValidationMessage(string.Empty, "Unable to save changes. Try again, and if the problem persists, see your system administrator.")); return(validationDetails); } catch (Exception ex) { Logger.Error(ex, ex.Message); throw; } }
public override ValidationResult Validate(ActionType actionType) { var collection = new ValidationMessageCollection(); collection.AddEmptyMessage(Code, "Code"); if (actionType != ActionType.Delete) { collection.AddEmptyMessage(Name, "Name"); } if (actionType == ActionType.Add) { //TODO: db check for unique code. } return(collection.ToValidationResult()); }
public override ValidationResult Validate(ActionType actionType) { var validationResult = base.Validate(actionType); if (actionType == ActionType.Delete) { return(validationResult); } var collection = new ValidationMessageCollection(); collection.AddRange(validationResult.Messages); collection.AddEmptyMessage(PhoneNumber, "PhoneNumber"); return(collection.ToValidationResult()); }
private static ValidationMessageCollection OnUpdateFailedFunc(IRepository repository, DbUpdateConcurrencyException dbUpdateEx, DepartmentUpdate.CommandModel commandModel, ref byte[] rowVersion) { var validationMessages = new ValidationMessageCollection(); var entry = dbUpdateEx.Entries.Single(); var databaseEntry = entry.GetDatabaseValues(); if (databaseEntry == null) { validationMessages.Add(string.Empty, "Unable to save changes. The department was deleted by another user."); return(validationMessages); } var databaseValues = (Department)databaseEntry.ToObject(); rowVersion = databaseValues.RowVersion; if (databaseValues.Name != commandModel.Name) { validationMessages.Add(nameof(commandModel.Name), "Current value: " + databaseValues.Name); } if (databaseValues.Budget != commandModel.Budget) { validationMessages.Add(nameof(commandModel.Budget), "Current value: " + string.Format("{0:c}", databaseValues.Budget)); } if (databaseValues.StartDate != commandModel.StartDate) { validationMessages.Add(nameof(commandModel.StartDate), "Current value: " + string.Format("{0:d}", databaseValues.StartDate)); } if (databaseValues.InstructorID != commandModel.InstructorID) { validationMessages.Add(nameof(commandModel.InstructorID), "Current value: " + repository.GetEntity <Instructor>(p => p.ID == databaseValues.InstructorID.Value).FullName); } validationMessages.Add(string.Empty, "The record you attempted to edit " + "was modified by another user after you got the original value. The " + "edit operation was canceled and the current values in the database " + "have been displayed. If you still want to edit this record, click " + "the Save button again. Otherwise click the Back to List hyperlink."); return(validationMessages); }
public virtual ValidationMessageCollection ValidateComplete(string completedMessage, User currentUser) { var validationMessages = new ValidationMessageCollection(); if (string.IsNullOrEmpty(completedMessage)) { validationMessages.AddError("CompletedMessage", "Message is empty."); } //Business logic is that you can't complete someone else's task unless you have the permission to do so. if (AssignedTo != currentUser && !currentUser.Role.PermissionRoles.Select(x => x.Permission.Id).Contains(PermissionIds.CompleteAnotherUsersTask)) { validationMessages.AddError("You do not have the permission to complete this task."); } return(validationMessages); }
//todo: pass in bookings for employee to check clashes? private static ValidationMessageCollection ValidateMakeUpdate(DateTime start, DateTime end, IEnumerable <Booking> bookings, Booking bookingBeingUpdated) { var validationMessages = new ValidationMessageCollection(); if (start == default(DateTime) || end == default(DateTime)) { validationMessages.AddError("Start and end time not correctly set."); } if (!validationMessages.IsValid) { return(validationMessages); } if (start.Year != 2012 || end.Year != 2012) { validationMessages.AddError("Holidays can only be booked for 2012."); //For simplicity in this example. } if (start > end) { validationMessages.AddError("Start date is after end date."); } if (!validationMessages.IsValid) { return(validationMessages); } var matchingTimeAllocations = (from booking in bookings where (bookingBeingUpdated == null || bookingBeingUpdated != booking) && ((start >= booking.Start && start <= booking.End) || (end >= booking.Start && end <= booking.End) || (start <= booking.Start && end >= booking.End)) select booking) .ToList(); if (matchingTimeAllocations.Any()) { validationMessages.AddError("Booking clashes with other bookings for employee."); } return(validationMessages); }
private static ValidationMessageCollection ValidateBookMove(DateTime start, DateTime end, IEnumerable <Appointment> employeesOtherAppointments, Appointment bookingBeingUpdated) { var validationMessages = new ValidationMessageCollection(); if (start == default(DateTime) || end == default(DateTime)) { validationMessages.AddError("Start and end time not correctly set."); } if (!validationMessages.IsValid) { return(validationMessages); } if (start > end) { validationMessages.AddError("Start date is after end date."); } if (!validationMessages.IsValid) { return(validationMessages); } var matchingTimeAllocations = (from appointment in employeesOtherAppointments where (bookingBeingUpdated == null || bookingBeingUpdated != appointment) && ((start >= appointment.Start && start <= appointment.End) || (end >= appointment.Start && end <= appointment.End) || (start <= appointment.Start && end >= appointment.End)) select appointment) .ToList(); if (matchingTimeAllocations.Any()) { validationMessages.AddError("Appointment clashes with other appointments for employee."); } return(validationMessages); }
public override int SaveChanges() { ValidationMessageCollection validationMessages; validationMessages = new ValidationMessageCollection(); foreach (DbEntityEntry entry in this.ChangeTracker.Entries().Where(x => x.State == EntityState.Added || x.State == EntityState.Modified)) { validationMessages.AddRange((entry.Entity as Entity).Validate()); } if (validationMessages.Any(x => x.ValidationLevel == ValidationLevel.Error)) { // we found invalid objects that were being saved => prevent saving them to the database throw new ValidationException(validationMessages); } else { return(base.SaveChanges()); } }
public void TestException() { ValidationMessageCollection messages = new ValidationMessageCollection(); IValidatable source = new Example(); messages.Add(new ValidationMessage("messageKey", "defaultMessage: {0}{1}", new string[] { "X", "Y" }, source, "PropertyA", ValidationLevel.Warning, ValidationContext.Default, 5)); try { throw new ValidationException(messages); } catch (ValidationException ex) { Assert.IsNotNull(ex); Assert.AreEqual(1, ex.ValidaitonMessages.Count); Assert.AreEqual("defaultMessage: XY", ex.ValidaitonMessages[0].Message); Assert.AreEqual(source, ex.ValidaitonMessages[0].ValidationSource); Assert.AreEqual("PropertyA", ex.ValidaitonMessages[0].PropertyName); Assert.AreEqual(ValidationLevel.Warning, ex.ValidaitonMessages[0].ValidationLevel); Assert.AreEqual(5, ex.ValidaitonMessages[0].ValidationPriority); Assert.AreEqual(ValidationContext.Default, ex.ValidaitonMessages[0].ValidationContext); } }
public static ValidationMessageCollection ValidateRaise(string description, User assignedTo, TaskType type, User currentUser) { //ValidateRaise and ValidateEdit look similar. They could be refactored to call the same method but I have left it like this //in this example for clarity. var validationMessages = new ValidationMessageCollection(); if (string.IsNullOrEmpty(description)) { validationMessages.AddError("Description", "Description is null or empty."); } if (assignedTo == null) { validationMessages.AddError("AssignedTo", "AssignedTo is null."); } if (type == null) { validationMessages.AddError("Type", "Type is null."); } return(validationMessages); }
private void ValidateOneAdministratorAssignmentPerInstructor() { if (Context.CommandModel.InstructorID == null) { return; } var queryRepository = ResolveService <IQueryRepository>(); var duplicateDepartment = queryRepository.GetEntity <Department>( p => p.InstructorID == Context.CommandModel.InstructorID.Value, new AsNoTrackingQueryStrategy(), new EagerLoadingQueryStrategy <Department>(p => p.Administrator), false); if (duplicateDepartment != null) { string errorMessage = $"Instructor {duplicateDepartment.Administrator.FirstMidName} {duplicateDepartment.Administrator.LastName} " + $"is already administrator of the {duplicateDepartment.Name} department."; ValidationMessageCollection.Add(string.Empty, errorMessage); } }
public void When_ValidateComplete_is_called_Then_correct_methods_are_called() { var employeeChecklistId = Guid.NewGuid(); var employeeChecklist = new Mock<EmployeeChecklist>(); var validationMessages = new ValidationMessageCollection(); var request = new CompleteEmployeeChecklistRequest { EmployeeChecklistId = employeeChecklistId }; _employeeChecklistrepo .Setup(x => x.GetById(employeeChecklistId)) .Returns(employeeChecklist.Object); employeeChecklist .Setup(x => x.ValidateComplete()) .Returns(validationMessages); GetTarget().ValidateComplete(request); _employeeChecklistrepo.Verify(x => x.GetById(employeeChecklistId)); employeeChecklist.Verify(x => x.ValidateComplete()); }
public UpdateBookingInvalidatedEvent(Booking booking, ValidationMessageCollection validationMessages) : base(booking) { ValidationMessages = validationMessages; }
public Response(ValidationMessageCollection validationDetails, byte[] rowVersion) : base(validationDetails) { RowVersion = rowVersion; }
public Response(ValidationMessageCollection validationDetails, int?studentId) : base(validationDetails) { StudentId = studentId; }
// If you are using the auto-validation 'decorator' do not change the signiture of this ctor (see AutoValidate<T>) in the // DomainBootstrapper class public Response(ValidationMessageCollection validationDetails) : base(validationDetails) { }
public Response(ValidationMessageCollection validationDetails, bool hasConcurrencyError) : base(validationDetails) { HasConcurrencyError = hasConcurrencyError; }
public Response(ValidationMessageCollection validationDetails, int?departmentId) : base(validationDetails) { DepartmentId = departmentId; }
public ValidationFaultException(ValidationMessageCollection messages) : base(new ValidationFault(messages), "A validation error occured.") { }
public Response(ValidationMessageCollection validationDetails, int?instructorId) : base(validationDetails) { InstructorId = instructorId; }
protected static ValidationMessageCollection ValidateMake(MakeBookingParameterSet parameterSet) { var validationMessages = new ValidationMessageCollection(); if (!parameterSet.PickUp.HasValue || parameterSet.PickUp.Value == default(DateTime)) { validationMessages.AddError("PickUp", "Pick up date is required."); } else { if (parameterSet.PickUp.Value < DateTime.Now.Date) { validationMessages.AddError("PickUp", "Pick up date must not be in the past."); } } if (!parameterSet.DropOff.HasValue || parameterSet.DropOff == default(DateTime)) { validationMessages.AddError("DropOff", "Drop off date is required."); } else { if (parameterSet.DropOff.Value < DateTime.Now) { validationMessages.AddError("DropOff", "Drop off date must not be in the past."); } } if (parameterSet.PickUp.HasValue && parameterSet.DropOff.HasValue) { if (parameterSet.DropOff.Value < parameterSet.PickUp.Value) { validationMessages.AddError("DropOff", "Drop off date must not be before pickup date."); } } if (parameterSet.Bus == null) { validationMessages.AddError("Bus", "Bus is required."); } if (parameterSet.NumberOfAdults <= 0) { validationMessages.AddError("NumberOfAdults", "Booking must be for 1 or more adults."); } if (string.IsNullOrEmpty(parameterSet.DrivingLicenceNumber)) { validationMessages.AddError("DrivingLicenceNumber", "Driving licence number is required."); } if (parameterSet.Bus != null && parameterSet.PickUp.HasValue && parameterSet.DropOff.HasValue && parameterSet.Bus.GetConflictingBookings(parameterSet.PickUp.Value, parameterSet.DropOff.Value).Any()) { validationMessages.AddError("", "Booking conflicts with existing bookings."); } var registerCustomerParameterSet = RegisterCustomerParameterSet.MapFrom(parameterSet); validationMessages.AddRange(Customer.ValidateRegister(registerCustomerParameterSet)); return(validationMessages); }
public ValidationException(ValidationMessageCollection validationMessages) : base("A validation error occured.") { ValidationMessages = validationMessages; }
public List<SmartFormViewActionValidationMessage> SmartFormViewActionValidationMessages(ValidationMessageCollection messages) { List<SmartFormViewActionValidationMessage> list = new List<SmartFormViewActionValidationMessage>(); foreach (ValidationMessage message in messages) { list.Add(new SmartFormViewActionValidationMessage { message = message.Message }); } return list; }