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); }
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() })); }