public async Task <BaseResponse> Authenticate(LoginDto user) { var response = new BaseResponse(); var dbUser = await _userRepository.GetByUsername(user.Username); if (dbUser is null) { return(InvalidCredentialsResponse(response)); } if (dbUser.Password != user.Password) { return(InvalidCredentialsResponse(response)); } response.Data.Add("token", GenerateJSONWebToken(dbUser)); var monthlyBalance = await _monthlyBalanceRepository.GetNewestMonthlyBalance(dbUser.UserId); if (monthlyBalance is null || monthlyBalance.ValidUntil < DateTime.Now) { response.Data.Add("hasToSetMonthlyBalance", true); } return(response); }
public async Task <BaseResponse> Create(MonthlyBalanceDto monthlyBalance) { var response = new BaseResponse(); User currentUser = await _requestDataService.GetCurrentUser(); var currentMonthlyBalance = await _monthlyBalanceRepository.GetNewestMonthlyBalance(currentUser.UserId); if (currentMonthlyBalance != null && currentMonthlyBalance.ValidUntil > DateTime.Now) { response.Infos.Errors.Add($"You already have a monthly balance until {currentMonthlyBalance.ValidUntil.ToString("dd.MM.yyyy")}. Please delete it first to set a new one."); response.StatusCode = HttpStatusCode.Conflict; return(response); } MonthlyBalanceDtoValidator validator = new MonthlyBalanceDtoValidator(); var result = validator.Validate(monthlyBalance); if (!result.IsValid) { response.Infos.Errors.AddRange(result.Errors.ToList().Select(error => error.ErrorMessage)); response.StatusCode = HttpStatusCode.UnprocessableEntity; return(response); } var newMonthlyBalance = new MonthlyBalance { ValidUntil = monthlyBalance.ValidUntil, AvailableMonthlyBalance = monthlyBalance.AvailableMonthlyBalance, BalanceUser = currentUser }; var dbBalance = await _monthlyBalanceRepository.Insert(newMonthlyBalance); dbBalance.BalanceUser = null; response.Data.Add("balance", dbBalance); return(response); }