示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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() }));
        }