Как сохранить две данные в одной таблице с помощью Entity Framework Core - PullRequest
0 голосов
/ 23 апреля 2019

Я создаю функцию кода реферала, где пользователь вводит код реферала при регистрации, а затем я получаю пользователя из кода реферала и добавляю кредиты на его аккаунт, в то же время я хочу добавить кредит для пользователя, который только что зарегистрировался, ноМои единственные данные были сохранены не оба

Я добавил код для добавления кредитов, для которого реферальный код использует другого пользователя для регистрации, также написал код для добавления кредитов для текущего зарегистрированного пользователя, но не смог добавить кредит для обоих пользователейодновременно

[HttpPost("register")]
public async Task<IActionResult> Register(UserForRegisterDto userForRegisterDto)
{
        if (!string.IsNullOrEmpty(userForRegisterDto.Email))
        {
            userForRegisterDto.Email = userForRegisterDto.Email.ToLower();

            if (await _repo.UserExists(userForRegisterDto))
                return BadRequest("User For this mail/contact already exists" );
        }

        if(!string.IsNullOrEmpty(userForRegisterDto.ContactNo))
        {
            if (await _repo.UserExists(userForRegisterDto))
                return BadRequest("User For this mail/contact already exists");
        }

        var userToCreate = _mapper.Map<User>(userForRegisterDto);
        var createdUser = await _repo.Register(userToCreate, userForRegisterDto.Password);

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

        if (userForRegisterDto.ReferralCode != null)
        {
            string message = "Congratulations you recieved 100 rs credit on your account";
            var getUserByRefCode = await _repo.GetUserByReferralCode(userForRegisterDto.ReferralCode);
            var getCurrentCreatedUser = await _repos.GetUser(id);

            if (getUserByRefCode != null)
            {
                ReferralStatus status = new ReferralStatus()
                {
                    Credits = 100,
                    OfferAddedOn = DateTime.UtcNow,
                    IsCreditsUsed = false,
                    ExpiresOn = DateTime.UtcNow.AddYears(1)
                };

                getUserByRefCode.ReferralStatus.Add(status);
                getCurrentCreatedUser.ReferralStatus.Add(status);
                await _repos.SaveAll();
                return Ok(new { userToReturn, message });
            }
        }

        return Ok(userToReturn);
}
...