public async Task <IActionResult> GetWeights(int userId)
        {
            var user = await _repo.GetUser(userId);

            user.Weights = user.Weights.OrderBy(d => d.Date).ToList();
            var weightsToReturn = _mapper.Map <IEnumerable <WeightForReturnDto> >(user.Weights);

            return(Ok(weightsToReturn));
        }
Example #2
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));
        }