public async Task <IntegrationClientCreateResponse> CreateIntegrationClient(IntegrationClientCreateRequest request) { var response = new IntegrationClientCreateResponse(); var currentUser = _cacheManager.GetCachedCurrentUser(request.CurrentUserId); if (!currentUser.IsAdmin) { response.SetInvalid(); return(response); } if (await _organizationRepository.Any(x => x.Id == currentUser.OrganizationId && !x.IsActive)) { response.SetInvalidBecauseNotActive("organization"); return(response); } var integration = await _integrationRepository.Select(x => x.Uid == request.IntegrationUid); if (integration.IsNotExist()) { response.SetInvalidBecauseNotFound("integration"); return(response); } if (integration.OrganizationId != currentUser.OrganizationId) { response.SetInvalid(); return(response); } var entity = _integrationClientFactory.CreateEntity(integration); await _integrationClientRepository.Insert(request.CurrentUserId, entity); response.Item = _integrationClientFactory.CreateDtoFromEntity(entity); response.Status = ResponseStatus.Success; return(response); }
public async Task <SignUpResponse> CreateOrganizationWithAdmin(SignUpRequest request) { var response = new SignUpResponse(); var user = await _userRepository.Select(x => x.Email == request.Email); if (user.IsExist()) { response.ErrorMessages.Add("email_already_exist"); response.Status = ResponseStatus.Invalid; return(response); } var organization = await _organizationRepository.Select(x => x.Name == request.OrganizationName); if (organization.IsExist()) { response.ErrorMessages.Add("organization_name_already_exist"); response.Status = ResponseStatus.Invalid; return(response); } organization = _organizationFactory.CreateEntityFromRequest(request, _cryptoHelper.GetKeyAsString(), _cryptoHelper.GetIVAsString()); var salt = _cryptoHelper.GetSaltAsString(); var passwordHash = _cryptoHelper.Hash(request.Password, salt); user = _userFactory.CreateEntityFromRequest(request, organization, salt, passwordHash); var english = await _languageRepository.Select(x => x.IsoCode2Char == "en"); user.LanguageId = english.Id; user.LanguageUid = english.Uid; user.LanguageName = english.Name; user.LanguageIconUrl = english.IconUrl; var loginLog = _userLoginLogFactory.CreateEntityFromRequest(request, user); var integration = _integrationFactory.CreateDefault(organization); var integrationClient = _integrationClientFactory.CreateEntity(integration); var project = _projectFactory.CreateDefault(organization); var(uowResult, insertedOrganization, insertedUser) = await _signUpUnitOfWork.DoWork(organization, user, loginLog, integration, integrationClient, project); if (uowResult) { // todo:send welcome email // todo:send email log _cacheManager.UpsertUserCache(insertedUser, _userFactory.MapCurrentUser(insertedUser)); _cacheManager.UpsertOrganizationCache(insertedOrganization, _organizationFactory.MapCurrentOrganization(insertedOrganization)); response.Status = ResponseStatus.Success; return(response); } response.SetFailed(); return(response); }