public async Task <RegisterResult> RegisterVk(RegisterVkModel registerModel) { if (registerModel == null || registerModel.Id == 0 || String.IsNullOrEmpty(registerModel.AccessToken) || !(await CheckVkToken(registerModel))) { return(new RegisterResult(OperationResultStatus.Error, "Wrong Vk data")); } var identity = new UserIdentity { VkIdentity = registerModel.GetVkIdentity(), Device = registerModel.Device }; var result = await _identityService.AddUserIdentity(identity); if (result.Status == OperationResultStatus.Error) { return(RegisterResult.FromIdResult(result)); } RegisterResult registerResult; if (result.Status == OperationResultStatus.Success) { var user = new User { Id = result.Id }; registerModel.FillUserFields(user); registerResult = RegisterResult.FromIdResult(await _userService.AddNewUser(user)); if (registerResult.Status != OperationResultStatus.Success) { return(registerResult); } var neededFields = user.CheckImportantFields(); if (neededFields.Any()) { registerResult.Status = OperationResultStatus.Warning; registerResult.Description = neededFields.JoinToString(); } await _appCountersService.UserRegistered(); } else //warning, user exists { registerResult = new RegisterResult(result.Id); } if (Request != null) { SignInRequest(registerResult); } return(registerResult); }