Exemplo n.º 1
0
        public async Task <ActionResult <PlaceOwnerFullResponse> > PostPlaceOwner(PlaceOwnerRequest placeOwnerRequest, long id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (!IsAuthorized(id))
            {
                return(Unauthorized());
            }

            var user = await _context.Users.FirstOrDefaultAsync(u => u.Username.Equals(placeOwnerRequest.Username, StringComparison.OrdinalIgnoreCase));

            if (user == null)
            {
                return(NotFound("User not found"));
            }

            var placeOwner = new PlaceOwner
            {
                UserID  = user.ID,
                PlaceID = id
            };

            _context.PlaceOwners.Add(placeOwner);
            await _context.SaveChangesAsync();

            return(_mapper.Map <PlaceOwnerFullResponse>(placeOwner));
        }
Exemplo n.º 2
0
        public async Task <ActionResult <PlaceResponse> > PostPlace(PlaceRequest placeRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //var id = Convert.ToInt64(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            var place = _mapper.Map <Place>(placeRequest);

            _context.Places.Add(place);
            await _context.SaveChangesAsync();

            var placeOwner = new PlaceOwner
            {
                PlaceID = place.ID,
                UserID  = CurrentUserId
            };

            _context.PlaceOwners.Add(placeOwner);
            await _context.SaveChangesAsync();

            place = await _context.Places
                    .Include(p => p.OpeningTimes)
                    .Include(p => p.PlaceType)
                    .Include(p => p.Owners)
                    .Include(p => p.Images)
                    .FirstOrDefaultAsync(p => p.ID == place.ID);

            var placeResponse = _mapper.Map <PlaceResponse>(place);

            return(CreatedAtAction(nameof(GetPlace), new { id = place.ID }, placeResponse));
        }