public async Task UpdateTenancyAsync(Guid portfolioId, StartTenancyJourneyViewModel viewModel) { // If the tenant has previous been created, and has now been deleted, this will be reflected in IsDeleted on the tenant view model // same for tenant address // same for tenant contact var hasTenantTenancy = await(from tt in Context.TenantTenancies.AsNoTracking() join tenancy in Context.Tenancies on tt.TenancyId equals tenancy.Id join propertyDetails in Context.PropertyDetails on tenancy.PropertyDetailsId equals propertyDetails.Id join portfolio in Context.Portfolios on propertyDetails.PortfolioId equals portfolio.Id where portfolio.Id == portfolioId && tenancy.Id == viewModel.Tenancy.Id select tt) .AnyAsync(); if (!hasTenantTenancy) { throw new InvalidOperationException("Unable to find tenant tenancy"); } var updatedTenants = await _tenantsDataProvider.UpdateAsync(portfolioId, viewModel.Tenants); var updatedTenancy = await _tenanciesDataProvider.UpdateAsync(portfolioId, viewModel.Tenancy, viewModel.Tenants); await _tenanciesDataProvider.CreateTenantTenancyAsync(updatedTenancy, updatedTenants); }
public async Task CreateTenancyAsync(Guid portfolioId, StartTenancyJourneyViewModel viewModel) { //Untested var tenants = new List <TenantViewModel>(); foreach (var tenant in viewModel.Tenants) { tenants.Add(await _tenantsDataProvider.CreateAsync(portfolioId, tenant)); } var tenancy = await _tenanciesDataProvider.CreateAsync(portfolioId, viewModel.Tenancy, tenants); await _tenanciesDataProvider.CreateTenantTenancyAsync(tenancy, tenants); }
public async Task <IActionResult> Post([FromBody] StartTenancyJourneyViewModel value) { var portfolioId = User.GetPortfolioId(); if (ModelState.IsValid && await value.VerifyPermissionsAsync(_context, portfolioId)) { if (value.IsNew()) { await _journeyDataProvider.CreateTenancyAsync(portfolioId, value); } else { await _journeyDataProvider.UpdateTenancyAsync(portfolioId, value); } return(Ok()); } return(BadRequest(new { Errors = ModelState.ToErrorCollection() })); }