public static async Task <OrganizationRecruiter> GetRecruiterOrDefault(this IRepositoryAsync <OrganizationRecruiter> organizationRecruiterRepository, Guid?organizationId, Guid?recruiterId, string referralCode) { OrganizationRecruiter re = null; if (organizationId.HasValue && recruiterId.HasValue) { re = await organizationRecruiterRepository .FirstOrDefaultAsync(x => x.RecruiterId == recruiterId && x.OrganizationId == organizationId); } if (re == null) { if (organizationId.HasValue) { re = await organizationRecruiterRepository.Queryable() .Where(x => x.OrganizationId == organizationId.Value && x.RecruitingOrganizationDefaults.Any()) .FirstOrDefaultAsync() ?? await organizationRecruiterRepository.Queryable().Where(x => x.IsSystemDefault) .FirstAsync(); } else { re = await organizationRecruiterRepository.Queryable().Where(x => x.IsSystemDefault) .FirstAsync(); } } return(re); }
public async Task <T> Create <T>( OrganizationRecruiterInput model ) where T : OrganizationRecruiterOutput { var entity = await Repository.Queryable().IgnoreQueryFilters() .Where(x => x.OrganizationId == model.OrganizationId && x.RecruiterId == model.RecruiterId) .FirstOrDefaultAsync(); if (entity != null) { if (entity.IsDeleted) { entity.IsDeleted = false; entity.UpdatedById = _userInfo.UserId; entity.Updated = DateTimeOffset.UtcNow; entity.Created = entity.Updated; entity.CreatedById = _userInfo.UserId; entity.InjectFrom(model); var records = await Repository.UpdateAsync(entity, true); _logger.LogDebug(GetLogMessage("{0} Records Updated"), records); if (records > 0) { } } } else { entity = new OrganizationRecruiter() { Updated = DateTimeOffset.UtcNow, Created = DateTimeOffset.UtcNow, CreatedById = _userInfo.UserId, UpdatedById = _userInfo.UserId, RecruiterStream = model.RecruiterStream, RecruiterBonus = model.RecruiterBonus }.InjectFrom(model) as OrganizationRecruiter; var records = await Repository.InsertAsync(entity, true); _logger.LogDebug(GetLogMessage("{0} Records Updated"), records); if (records > 0) { } } var output = await GetById <T>(model.RecruiterId, model.OrganizationId); return(output); }
public async Task <PersonResult> CreatePerson( PersonInput input, Guid?recruiterId, Guid?marketerId, Guid?affiliateOrganizationId, string password = "******" ) { _logger.LogInformation(GetLogMessage("Recruiter:{0};Marketer:{1};AffiliateOrg:{2}"), recruiterId, marketerId, affiliateOrganizationId); var user = await _userAccountManager .FindByEmailAsync(input.EmailAddress); var retVal = new PersonResult(); if (user == null) { OrganizationRecruiter re = null; OrganizationMarketer ma = null; if (affiliateOrganizationId.HasValue) { if (marketerId.HasValue) { ma = await _orgMarketerRepository.Queryable() .Where(x => x.OrganizationId == affiliateOrganizationId.Value && x.MarketerId == marketerId.Value) .FirstOrDefaultAsync(); } else { ma = await _orgMarketerRepository.Queryable() .Include(x => x.OrganizationDefaults) .Where(x => x.OrganizationId == affiliateOrganizationId.Value && x.OrganizationDefaults.Any()) .FirstOrDefaultAsync(); } if (recruiterId.HasValue) { re = await _orgRecruiterRepository.Queryable() .Where(x => x.OrganizationId == affiliateOrganizationId.Value && x.RecruiterId == recruiterId.Value) .FirstOrDefaultAsync(); } else { re = await _orgRecruiterRepository.Queryable() .Include(x => x.RecruitingOrganizationDefaults) .Where(x => x.OrganizationId == affiliateOrganizationId.Value && x.RecruitingOrganizationDefaults.Any()) .FirstOrDefaultAsync(); } } if (ma == null) { ma = await _orgMarketerRepository.Queryable().Where(x => x.IsSystemDefault).FirstAsync(); } if (re == null) { re = await _orgRecruiterRepository.Queryable().Where(x => x.IsSystemDefault).FirstAsync(); } user = new ApplicationUser { UserName = input.EmailAddress, Email = input.EmailAddress, EmailConfirmed = false, Created = DateTimeOffset.UtcNow, PhoneNumber = input.PhoneNumber }; var result = await _userAccountManager.CreateAsync(user, password); if (!result.Succeeded) { retVal.ErrorMessage = result.ToString(); return(retVal); } var person = new Person { ImageUrl = "https://www.dropbox.com/s/icxbbieztc2rrwd/default-avatar.png?raw=1", Id = user.Id, FirstName = input.FirstName, LastName = input.LastName, Iso2 = input.Iso2, ProvinceState = input.ProvinceState, ReferralCode = ma.ReferralCode, AccountManager = new AccountManager() { Id = user.Id, Created = DateTimeOffset.UtcNow, Updated = DateTimeOffset.UtcNow, ObjectState = ObjectState.Added }, ProjectManager = new ProjectManager() { Id = user.Id, Created = DateTimeOffset.UtcNow, Updated = DateTimeOffset.UtcNow, ObjectState = ObjectState.Added }, Marketer = new Marketer() { Id = user.Id, Created = DateTimeOffset.UtcNow, Updated = DateTimeOffset.UtcNow, ObjectState = ObjectState.Added }, Recruiter = new Recruiter() { Id = user.Id, Created = DateTimeOffset.UtcNow, Updated = DateTimeOffset.UtcNow, ObjectState = ObjectState.Added }, Contractor = new Contractor() { RecruiterOrganizationId = re.OrganizationId, RecruiterId = re.RecruiterId, IsAvailable = false, ObjectState = ObjectState.Added, Created = DateTimeOffset.UtcNow, Updated = DateTimeOffset.UtcNow, }, Customer = new Customer() { MarketerId = ma.MarketerId, MarketerOrganizationId = ma.OrganizationId, ObjectState = ObjectState.Added, Created = DateTimeOffset.UtcNow, Updated = DateTimeOffset.UtcNow, }, ObjectState = ObjectState.Added, Created = DateTimeOffset.UtcNow, Updated = DateTimeOffset.UtcNow }; var theResult = Repository.InsertOrUpdateGraph(person, true); _logger.LogDebug(GetLogMessage("{0} results updated"), theResult); if (theResult > 0) { retVal.Succeeded = true; retVal.PersonId = person.Id; await Task.Run(() => { RaiseEvent(new PersonCreatedEvent { PersonId = person.Id }); }); } } else { _logger.LogInformation(GetLogMessage("Email address:{0};"), input.EmailAddress); retVal.ErrorMessage = "Email address already exists"; } return(retVal); }