public void Update(EventUpdatableDeserializer eventDsl, Event @event) { if (!string.IsNullOrEmpty(eventDsl.Title)) { @event.Title = eventDsl.Title; } if (!string.IsNullOrEmpty(eventDsl.Description)) { @event.Description = eventDsl.Description; } if (eventDsl.SubscribeNumber.HasValue) { @event.SubscribeNumber = (int)eventDsl.SubscribeNumber; } if (!string.IsNullOrEmpty(eventDsl.Status)) { @event.Status = eventDsl.Status; } if (eventDsl.CloseAt.HasValue) { @event.CloseAt = eventDsl.CloseAt; } if (eventDsl.JuryPoint.HasValue) { @event.JuryPoint = eventDsl.JuryPoint; } if (eventDsl.OpenAt.HasValue) { @event.OpenAt = eventDsl.OpenAt; } if (eventDsl.RestrictedEvent.HasValue) { @event.RestrictedEvent = (bool)eventDsl.RestrictedEvent; } UpdateBookingsValidates(eventDsl, @event); @event.EndAt = eventDsl.EndAt; @event.StartAt = eventDsl.StartAt; @event.Location = eventDsl.Location; }
public async Task <IActionResult> Update([FromBody] EventUpdatableDeserializer eventDsl, int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Event @event = await Context.Event.FirstOrDefaultAsync((obj) => obj.Id == id); if (@event == null) { return(NotFound("Event not found")); } Services.Update(eventDsl, @event); if (!Services.IsTimeWindowValid(ref @event)) { var error = new String[] { "Time window is not valid, ensure close start before open" }; return(BadRequest(new { TimeWindow = error })); } if (@event.RestrictedEvent) { Services.AddAndRemoveEventRoles(eventDsl.RestrictedRolesList, @event); } else { Services.RemoveAllEventRoles(@event.Id); } try { Context.Event.Update(@event); await Context.SaveChangesAsync(); } catch (DbUpdateException e) { return(BadRequest(e.InnerException.Message)); } return(NoContent()); }
public void UpdateBookingsValidates(EventUpdatableDeserializer eventDsl, Event @event) { if (eventDsl.ValidationRequired.HasValue && eventDsl.ValidationRequired != @event.ValidationRequired) { Booking[] bookings = Context.Booking.Where(book => book.EventId == @event.Id).ToArray(); @event.ValidationRequired = (bool)eventDsl.ValidationRequired; @event.ValidatedNumber = 0; foreach (var book in bookings) { if (eventDsl.ValidationRequired.Value) { book.Validated = false; } else { book.Validated = null; } } Context.Booking.UpdateRange(bookings); } }