示例#1
0
        public async Task <IActionResult> Create([FromBody] OrganizedEventRequest request)
        {
            var organizedEvent = _mapper.Map <OrganizedEvent>(request);

            organizedEvent.UserId = HttpContext.GetUserId();

            await _organizedEventService.CreateEventAsync(organizedEvent);

            var baseUrl     = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}";
            var locationUri = baseUrl + "/" + ApiRoutes.OrganizedEvents.Get.Replace("{eventId}", organizedEvent.Id.ToString());

            return(Created(locationUri, _mapper.Map <OrganizedEventResponse>(organizedEvent)));
        }
示例#2
0
        public async Task <IActionResult> Update([FromRoute] Guid eventId, [FromBody] OrganizedEventRequest request)
        {
            var userOwnsEvent = await _organizedEventService.UserOwnsEventAsync(eventId, HttpContext.GetUserId());

            if (!userOwnsEvent)
            {
                return(BadRequest(new { error = "You do not own this post" }));
            }

            var organizedEvent = await _organizedEventService.GetEventByIdAsync(eventId);

            organizedEvent.Title       = request.Title;
            organizedEvent.Slug        = request.Slug;
            organizedEvent.Description = request.Description;
            organizedEvent.From        = request.From;
            organizedEvent.To          = request.To;
            organizedEvent.LastsOneDay = request.LastsOneDay;
            organizedEvent.Address     = request.Address;
            organizedEvent.Place       = request.Place;
            organizedEvent.Lat         = request.Lat;
            organizedEvent.Lng         = request.Lng;
            organizedEvent.Expenses    = request.Expenses.Where(x => !string.IsNullOrWhiteSpace(x.Name))
                                         .Select(x => new Expense {
                EventId = organizedEvent.Id, Name = x.Name, Cost = x.Cost
            }).ToList();
            organizedEvent.Participants = request.Participants.Where(x => !string.IsNullOrWhiteSpace(x.Name))
                                          .Select((x, y) => new Participant {
                EventId = organizedEvent.Id, Name = x.Name, Status = x.Status
            })
                                          .ToList();

            var updated = await _organizedEventService.UpdateEventAsync(organizedEvent);

            if (updated)
            {
                return(Ok(_mapper.Map <OrganizedEventResponse>(organizedEvent)));
            }

            return(NotFound());
        }