Exemplo n.º 1
0
    public async Task <IActionResult> Create([FromBody] EventCreationBindingModel bm)
    {
        var @event = await _eventRepo.FindByNameAndDate(bm.Name, bm.StartsAt);

        if (@event != null)
        {
            return(Conflict("An event exists with the same name and date."));
        }

        var venueMap = await _venueRepo.FindAndMapById(bm.Venues.Select(x => x.VenueId));

        var venues = new List <(int, Venue)>();

        foreach (var venuePriority in bm.Venues)
        {
            if (venueMap.ContainsKey(venuePriority.VenueId))
            {
                venues.Add((venuePriority.Priority, venueMap[venuePriority.VenueId]));
            }
        }

        @event = await _eventRepo.Create(bm.Name, bm.StartsAt, bm.DurationInMinutes, venues);

        return(Ok(Mapper.Map <EventViewModel>(@event)));
    }