Ejemplo n.º 1
0
        public async Task <IActionResult> Register(UserForRegisterDto userForRegisterDto)
        {
            // TODO: validate request
            userForRegisterDto.Username = userForRegisterDto.Username.ToLower();
            if (await _repo.UserExists(userForRegisterDto.Username))
            {
                return(BadRequest("Username already exists"));
            }
            var userToCreate = _mapper.Map <User>(userForRegisterDto);
            var createdUser  = await _repo.Register(userToCreate, userForRegisterDto.Password);

            // add the start weight to the new users weights
            var userFromRepo = await _userRepo.GetUser(createdUser.Id);

            var w = new WeightForCreationDto {
                Value = userFromRepo.StartWeight,
                Date  = DateTime.Now
            };
            var weight = _mapper.Map <Weight>(w);

            userFromRepo.Weights.Add(weight);
            if (!await _userRepo.SaveAll())
            {
                return(BadRequest("Could not add the start weight"));
            }

            var userToReturn = _mapper.Map <UserForDetailedDto>(createdUser);

            return(CreatedAtRoute("GetUser", new { controller = "Users", id = createdUser.Id }, userToReturn));
        }
        public async Task <IActionResult> AddWeightForUser(int userId, WeightForCreationDto weightForCreation)
        {
            var userFromRepo = await _repo.GetUser(userId);

            var weight = _mapper.Map <Weight>(weightForCreation);

            userFromRepo.Weights.Add(weight);
            if (await _repo.SaveAll())
            {
                var weightToReturn = _mapper.Map <WeightForReturnDto>(weight);
                return(CreatedAtRoute("GetWeight", new WeightForReturnDto {
                    Id = weight.Id
                }, weightToReturn));
            }
            return(BadRequest("Could not add the weight"));
        }