Exemplo n.º 1
0
        public async Task <Guid> PromoteAsync(Guid portfolioId, ShortlistedPropertyViewModel viewModel)
        {
            var entity = new PropertyDetails
            {
                Reference             = viewModel.Reference,
                PropertyStreetAddress = viewModel.Address,
                PurchasePrice         = viewModel.PricePaid,
                TargetRent            = viewModel.ExpectedRentalIncome,
                InterestRate          = (double?)viewModel.MortgageInterestRate,
                Created        = DateTime.Now,
                PortfolioId    = portfolioId,
                MortgageAmount = viewModel.PricePaid - viewModel.Deposit
            };

            await Context.PropertyDetails.AddAsync(entity);

            await Context.SaveChangesAsync();

            var shortlistedPropertyEntity = await Context.ShortlistedProperties.FirstOrDefaultAsync(c => c.Id == viewModel.ShortlistedPropertyId && c.PortfolioId == portfolioId);

            if (shortlistedPropertyEntity != null)
            {
                shortlistedPropertyEntity.Deleted = DateTime.Now;
                await Context.SaveChangesAsync();
            }

            return(entity.Id);
        }
Exemplo n.º 2
0
        public async Task UpdateAsync(Guid portfolioId, ShortlistedPropertyViewModel viewModel)
        {
            var existingEntity = await Context.ShortlistedProperties.FirstOrDefaultAsync(c => c.PortfolioId == portfolioId && !c.IsDeleted && c.Id == viewModel.ShortlistedPropertyId);

            if (existingEntity != null)
            {
                existingEntity.MapFrom(viewModel);
                Context.ShortlistedProperties.Update(existingEntity);
                await Context.SaveChangesAsync();
            }
            else
            {
                var newEntity = new ShortlistedProperty
                {
                    Address = viewModel.Address,
                    Created = DateTime.Now,
                    Deposit = viewModel.Deposit,
                    ExpectedRentalIncome = viewModel.ExpectedRentalIncome,
                    Fees                 = viewModel.Fees,
                    Insurance            = viewModel.Insurance,
                    LettableUnits        = viewModel.LettableUnits,
                    ManagementCost       = viewModel.ManagementCost,
                    MortgageInterestRate = viewModel.MortgageInterestRate,
                    PortfolioId          = portfolioId,
                    PricePaid            = viewModel.PricePaid,
                    Reference            = viewModel.Reference,
                    RepairsContingency   = viewModel.RepairsContingency,
                    ServiceCharge        = viewModel.ServiceCharge
                };

                await Context.ShortlistedProperties.AddAsync(newEntity);

                await Context.SaveChangesAsync();
            }
        }
        public async Task <IActionResult> Promote([FromBody] ShortlistedPropertyViewModel value)
        {
            if (ModelState.IsValid)
            {
                var propertyDetailsId = await _propertyDataProvider.PromoteAsync(User.GetPortfolioId(), value);

                return(Ok(propertyDetailsId));
            }

            return(BadRequest(new { Errors = ModelState.ToErrorCollection() }));
        }
        public async Task <IActionResult> Post([FromBody] ShortlistedPropertyViewModel value)
        {
            if (ModelState.IsValid)
            {
                await _shortlistedPropertiesDataProvider.UpdateAsync(User.GetPortfolioId(), value);

                return(Ok());
            }

            return(BadRequest(new { Errors = ModelState.ToErrorCollection() }));
        }