public async Task <ResponseViewModel> CreateAsync(UserCreateRequestViewModel request) { using (_unitOfWork) { // Inicia a transação _unitOfWork.BeginTransaction(); // Adiciona o Perfil ProfileCreateCommand profileCreateCommand = new ProfileCreateCommand(Convert.ToInt32(request.IdType), Guid.NewGuid().ToString(), request.Avatar, request.CpfCnpj, request.Address); ResponseCommand profileCreateResponse = await _mediator.Send(profileCreateCommand, CancellationToken.None).ConfigureAwait(true); if (!profileCreateResponse.Success) { return(new ResponseViewModel(false, profileCreateResponse.Object)); } // Adiciona o Usuário UserCreateCommand userCreateCommand = new UserCreateCommand((int)profileCreateResponse.Object, Guid.NewGuid().ToString(), request.Name, request.Email); ResponseCommand userCreateResponse = await _mediator.Send(userCreateCommand, CancellationToken.None).ConfigureAwait(true); if (!userCreateResponse.Success) { return(new ResponseViewModel(false, userCreateResponse.Object)); } // Comita e Retorna _unitOfWork.CommitTransaction(); return(new ResponseViewModel(true, "User created")); } }
public int Create(ProfileCreateCommand request) { const string sql = "" + " INSERT INTO " + " FgjCqrsProfile (IdType, Guid, Avatar, CpfCnpj, Address) " + " VALUES (@IdType, @Guid, @Avatar, @CpfCnpj, @Address) " + " SELECT @@IDENTITY"; return(_unitOfWork.Connection.ExecuteScalar <int>(sql, request, _unitOfWork.Transaction)); }