public override async Task Validate(ApplicationOrderInput applicationOrderInput) { await base.Validate(applicationOrderInput); List <string> errors = new List <string>(); if (applicationOrderInput.OrderType == OrderType.PHENOLOGICAL && !applicationOrderInput.IdsPreOrder.Any()) { errors.Add("Si la orden es fenológica, deben existir preordenes fenologicas asociadas."); } foreach (var doses in applicationOrderInput.DosesOrder) { bool exists = await existElement.ExistsById <Dose>(doses.IdDoses); if (!exists) { errors.Add($"No existe dosis con id '{doses.IdDoses}'."); } } foreach (var barrack in applicationOrderInput.Barracks) { bool exists = await existElement.ExistsById <Barrack>(barrack.IdBarrack); if (!exists) { errors.Add($"No existe cuartel con id '{barrack.IdBarrack}'."); } if (barrack.IdNotificationEvents != null && barrack.IdNotificationEvents.Any()) { foreach (var idNotification in barrack.IdNotificationEvents) { bool existsEvent = await existElement.ExistsById <NotificationEvent>(idNotification); if (!existsEvent) { errors.Add($"No existe notificacion con id '{idNotification}'."); } } } } if (applicationOrderInput.StartDate > applicationOrderInput.EndDate) { errors.Add("La fecha inicial no puede ser mayor a la final."); } if (errors.Count > 0) { throw new Validation_Exception { ErrorMessages = errors } } ; }
public async override Task <ExtPostContainer <string> > SaveInput(ApplicationOrderInput input) { await Validate(input); var id = !string.IsNullOrWhiteSpace(input.Id) ? input.Id : Guid.NewGuid().ToString("N"); var order = new ApplicationOrder { Id = id, Barracks = input.Barracks, DosesOrder = input.DosesOrder, EndDate = input.EndDate, StartDate = input.StartDate, IdsPreOrder = input.IdsPreOrder, Name = input.Name, OrderType = input.OrderType, Wetting = input.Wetting }; search.DeleteElementsWithRelatedElement(EntityRelated.BARRACK_EVENT, EntityRelated.ORDER, id); search.DeleteElementsWithRelatedElement(EntityRelated.DOSES_ORDER, EntityRelated.ORDER, id); await SaveDb(order); return(await SaveSearch(order)); }