diff --git a/OrangeBricks.Web/Controllers/Offers/Builders/MyOffersViewModelBuilder.cs b/OrangeBricks.Web/Controllers/Offers/Builders/MyOffersViewModelBuilder.cs new file mode 100644 index 0000000..2c6fea8 --- /dev/null +++ b/OrangeBricks.Web/Controllers/Offers/Builders/MyOffersViewModelBuilder.cs @@ -0,0 +1,45 @@ +using System.Linq; +using OrangeBricks.Web.Models; +using OrangeBricks.Web.Controllers.Offers.ViewModels; + +namespace OrangeBricks.Web.Controllers.Offers.Builders +{ + public class MyOffersViewModelBuilder + { + private readonly IOrangeBricksContext _context; + + public MyOffersViewModelBuilder(IOrangeBricksContext context) + { + _context = context; + } + + public MyOffersViewModel Build(string buyerId) + { + var myOffers = _context.Offers + .Where(p => p.BuyerUserId == buyerId).ToList(); + + return new MyOffersViewModel + { + MyOffers = myOffers.Select(x => new MyOfferViewModel + { + Id = x.Id, + Amount = x.Amount, + CreatedAt = x.CreatedAt, + IsPending = x.Status == OfferStatus.Pending, + Status = x.Status.ToString(), + BuyerUserId = x.BuyerUserId, + StreetName = GetPropertyStreetName(x.PropertyId) + }), + }; + } + + private string GetPropertyStreetName(int propertyId) + { + var property = _context.Properties + .Where(p => p.Id == propertyId) + .SingleOrDefault(); + + return property.StreetName; + } + } +} \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Offers/OffersController.cs b/OrangeBricks.Web/Controllers/Offers/OffersController.cs index 7ce91a2..7a04203 100644 --- a/OrangeBricks.Web/Controllers/Offers/OffersController.cs +++ b/OrangeBricks.Web/Controllers/Offers/OffersController.cs @@ -1,12 +1,13 @@ using System.Web.Mvc; +using Microsoft.AspNet.Identity; using OrangeBricks.Web.Attributes; using OrangeBricks.Web.Controllers.Offers.Builders; using OrangeBricks.Web.Controllers.Offers.Commands; using OrangeBricks.Web.Models; namespace OrangeBricks.Web.Controllers.Offers -{ - [OrangeBricksAuthorize(Roles = "Seller")] +{ + public class OffersController : Controller { private readonly IOrangeBricksContext _context; @@ -14,8 +15,9 @@ public class OffersController : Controller public OffersController(IOrangeBricksContext context) { _context = context; - } - + } + + [OrangeBricksAuthorize(Roles = "Seller")] public ActionResult OnProperty(int id) { var builder = new OffersOnPropertyViewModelBuilder(_context); @@ -24,7 +26,17 @@ public ActionResult OnProperty(int id) return View(viewModel); } - [HttpPost] + [OrangeBricksAuthorize(Roles = "Buyer")] + public ActionResult MyOffers() + { + var builder = new MyOffersViewModelBuilder(_context); + var viewModel = builder.Build(User.Identity.GetUserId()); + + return View(viewModel); + } + + [HttpPost] + [OrangeBricksAuthorize(Roles = "Seller")] public ActionResult Accept(AcceptOfferCommand command) { var handler = new AcceptOfferCommandHandler(_context); @@ -35,6 +47,7 @@ public ActionResult Accept(AcceptOfferCommand command) } [HttpPost] + [OrangeBricksAuthorize(Roles = "Seller")] public ActionResult Reject(RejectOfferCommand command) { var handler = new RejectOfferCommandHandler(_context); diff --git a/OrangeBricks.Web/Controllers/Offers/ViewModels/OffersOnPropertyViewModel.cs b/OrangeBricks.Web/Controllers/Offers/ViewModels/OffersOnPropertyViewModel.cs index b42e2f4..2d3e9e5 100644 --- a/OrangeBricks.Web/Controllers/Offers/ViewModels/OffersOnPropertyViewModel.cs +++ b/OrangeBricks.Web/Controllers/Offers/ViewModels/OffersOnPropertyViewModel.cs @@ -20,5 +20,17 @@ public class OfferViewModel public DateTime CreatedAt { get; set; } public bool IsPending { get; set; } public string Status { get; set; } + public string BuyerUserId { get; set; } } + + public class MyOffersViewModel + { + public IEnumerable MyOffers { get; set; } + } + + public class MyOfferViewModel : OfferViewModel + { + public string StreetName { get; set; } + } + } \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Property/Commands/MakeOfferCommand.cs b/OrangeBricks.Web/Controllers/Property/Commands/MakeOfferCommand.cs index 738cf7c..2453ab9 100644 --- a/OrangeBricks.Web/Controllers/Property/Commands/MakeOfferCommand.cs +++ b/OrangeBricks.Web/Controllers/Property/Commands/MakeOfferCommand.cs @@ -5,5 +5,7 @@ public class MakeOfferCommand public int PropertyId { get; set; } public int Offer { get; set; } + + public string BuyerUserId { get; set; } } } \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Property/Commands/MakeOfferCommandHandler.cs b/OrangeBricks.Web/Controllers/Property/Commands/MakeOfferCommandHandler.cs index a91987b..cc848c9 100644 --- a/OrangeBricks.Web/Controllers/Property/Commands/MakeOfferCommandHandler.cs +++ b/OrangeBricks.Web/Controllers/Property/Commands/MakeOfferCommandHandler.cs @@ -22,7 +22,10 @@ public void Handle(MakeOfferCommand command) Amount = command.Offer, Status = OfferStatus.Pending, CreatedAt = DateTime.Now, - UpdatedAt = DateTime.Now + UpdatedAt = DateTime.Now, + BuyerUserId = command.BuyerUserId, + PropertyId = property.Id + }; if (property.Offers == null) diff --git a/OrangeBricks.Web/Controllers/Property/PropertyController.cs b/OrangeBricks.Web/Controllers/Property/PropertyController.cs index e3b5972..a306630 100644 --- a/OrangeBricks.Web/Controllers/Property/PropertyController.cs +++ b/OrangeBricks.Web/Controllers/Property/PropertyController.cs @@ -1,95 +1,99 @@ -using System.Collections; -using System.Linq; -using System.Web.Mvc; -using Microsoft.AspNet.Identity; -using OrangeBricks.Web.Attributes; -using OrangeBricks.Web.Controllers.Property.Builders; -using OrangeBricks.Web.Controllers.Property.Commands; -using OrangeBricks.Web.Controllers.Property.ViewModels; -using OrangeBricks.Web.Models; - -namespace OrangeBricks.Web.Controllers.Property -{ - public class PropertyController : Controller - { - private readonly IOrangeBricksContext _context; - - public PropertyController(IOrangeBricksContext context) - { - _context = context; - } - - [Authorize] - public ActionResult Index(PropertiesQuery query) - { - var builder = new PropertiesViewModelBuilder(_context); - var viewModel = builder.Build(query); - - return View(viewModel); - } - - [OrangeBricksAuthorize(Roles = "Seller")] - public ActionResult Create() - { - var viewModel = new CreatePropertyViewModel(); - - viewModel.PossiblePropertyTypes = new string[] { "House", "Flat", "Bungalow" } - .Select(x => new SelectListItem { Value = x, Text = x }) - .AsEnumerable(); - - return View(viewModel); - } - - [OrangeBricksAuthorize(Roles = "Seller")] - [HttpPost] - public ActionResult Create(CreatePropertyCommand command) - { - var handler = new CreatePropertyCommandHandler(_context); - - command.SellerUserId = User.Identity.GetUserId(); - - handler.Handle(command); - - return RedirectToAction("MyProperties"); - } - - [OrangeBricksAuthorize(Roles = "Seller")] - public ActionResult MyProperties() - { - var builder = new MyPropertiesViewModelBuilder(_context); - var viewModel = builder.Build(User.Identity.GetUserId()); - - return View(viewModel); - } - - [HttpPost] - [OrangeBricksAuthorize(Roles = "Seller")] - public ActionResult ListForSale(ListPropertyCommand command) - { - var handler = new ListPropertyCommandHandler(_context); - - handler.Handle(command); - - return RedirectToAction("MyProperties"); - } - - [OrangeBricksAuthorize(Roles = "Buyer")] - public ActionResult MakeOffer(int id) - { - var builder = new MakeOfferViewModelBuilder(_context); - var viewModel = builder.Build(id); - return View(viewModel); - } - - [HttpPost] - [OrangeBricksAuthorize(Roles = "Buyer")] - public ActionResult MakeOffer(MakeOfferCommand command) - { - var handler = new MakeOfferCommandHandler(_context); - - handler.Handle(command); - - return RedirectToAction("Index"); - } - } +using System.Collections; +using System.Linq; +using System.Web.Mvc; +using Microsoft.AspNet.Identity; +using OrangeBricks.Web.Attributes; +using OrangeBricks.Web.Controllers.Property.Builders; +using OrangeBricks.Web.Controllers.Property.Commands; +using OrangeBricks.Web.Controllers.Property.ViewModels; +using OrangeBricks.Web.Models; + +namespace OrangeBricks.Web.Controllers.Property +{ + public class PropertyController : Controller + { + private readonly IOrangeBricksContext _context; + + public PropertyController(IOrangeBricksContext context) + { + _context = context; + } + + [Authorize] + public ActionResult Index(PropertiesQuery query) + { + var builder = new PropertiesViewModelBuilder(_context); + var viewModel = builder.Build(query); + + return View(viewModel); + } + + [OrangeBricksAuthorize(Roles = "Seller")] + public ActionResult Create() + { + var viewModel = new CreatePropertyViewModel(); + + viewModel.PossiblePropertyTypes = new string[] { "House", "Flat", "Bungalow" } + .Select(x => new SelectListItem { Value = x, Text = x }) + .AsEnumerable(); + + return View(viewModel); + } + + [OrangeBricksAuthorize(Roles = "Seller")] + [HttpPost] + public ActionResult Create(CreatePropertyCommand command) + { + var handler = new CreatePropertyCommandHandler(_context); + + command.SellerUserId = User.Identity.GetUserId(); + + handler.Handle(command); + + return RedirectToAction("MyProperties"); + } + + [OrangeBricksAuthorize(Roles = "Seller")] + public ActionResult MyProperties() + { + var builder = new MyPropertiesViewModelBuilder(_context); + var viewModel = builder.Build(User.Identity.GetUserId()); + + return View(viewModel); + } + + [HttpPost] + [OrangeBricksAuthorize(Roles = "Seller")] + public ActionResult ListForSale(ListPropertyCommand command) + { + var handler = new ListPropertyCommandHandler(_context); + + handler.Handle(command); + + return RedirectToAction("MyProperties"); + } + + [OrangeBricksAuthorize(Roles = "Buyer")] + public ActionResult MakeOffer(int id) + { + var builder = new MakeOfferViewModelBuilder(_context); + var viewModel = builder.Build(id); + return View(viewModel); + } + + [HttpPost] + [OrangeBricksAuthorize(Roles = "Buyer")] + public ActionResult MakeOffer(MakeOfferCommand command) + { + var handler = new MakeOfferCommandHandler(_context); + + command.BuyerUserId = User.Identity.GetUserId(); + + handler.Handle(command); + + return RedirectToAction("Index"); + } + + + } } \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Property/ViewModels/MakeOfferViewModel.cs b/OrangeBricks.Web/Controllers/Property/ViewModels/MakeOfferViewModel.cs index fd3ab03..6be0d2d 100644 --- a/OrangeBricks.Web/Controllers/Property/ViewModels/MakeOfferViewModel.cs +++ b/OrangeBricks.Web/Controllers/Property/ViewModels/MakeOfferViewModel.cs @@ -6,5 +6,6 @@ public class MakeOfferViewModel public string StreetName { get; set; } public int Offer { get; set; } public int PropertyId { get; set; } + public string BuyerUserId { get; set; } } } \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Viewing/Builders/BookViewingViewModelBuilder.cs b/OrangeBricks.Web/Controllers/Viewing/Builders/BookViewingViewModelBuilder.cs new file mode 100644 index 0000000..8e08cd3 --- /dev/null +++ b/OrangeBricks.Web/Controllers/Viewing/Builders/BookViewingViewModelBuilder.cs @@ -0,0 +1,29 @@ +using OrangeBricks.Web.Controllers.Viewing.ViewModels; +using OrangeBricks.Web.Models; +using System; + +namespace OrangeBricks.Web.Controllers.Viewing.Builders +{ + public class BookViewingViewModelBuilder + { + private readonly IOrangeBricksContext _context; + + public BookViewingViewModelBuilder(IOrangeBricksContext context) + { + _context = context; + } + + public BookViewingViewModel Build(int id) + { + var property = _context.Properties.Find(id); + + return new BookViewingViewModel + { + PropertyId = property.Id, + PropertyType = property.PropertyType, + StreetName = property.StreetName, + ViewingDateTime = DateTime.Now + }; + } + } +} \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Viewing/Builders/BookedViewingsViewModelBuilder.cs b/OrangeBricks.Web/Controllers/Viewing/Builders/BookedViewingsViewModelBuilder.cs new file mode 100644 index 0000000..5a37491 --- /dev/null +++ b/OrangeBricks.Web/Controllers/Viewing/Builders/BookedViewingsViewModelBuilder.cs @@ -0,0 +1,62 @@ +using OrangeBricks.Web.Controllers.Property.ViewModels; +using OrangeBricks.Web.Controllers.Viewing.ViewModels; +using OrangeBricks.Web.Models; +using System.Collections.Generic; +using System.Linq; + +namespace OrangeBricks.Web.Controllers.Viewing.Builders +{ + public class BookedViewingsViewModelBuilder + { + private readonly IOrangeBricksContext _context; + + public BookedViewingsViewModelBuilder(IOrangeBricksContext context) + { + _context = context; + } + + public BookedViewingsViewModel Build(int id) + { + var viewings = _context.Viewings.Where(v => v.PropertyId == id).ToList(); + + return new BookedViewingsViewModel + { + HasViewings = viewings.Any(), + Property = BuildPropertyViewModel(id), + Viewings = BuildBookViewing(viewings) + }; + } + + private IEnumerable BuildBookViewing(List viewings) + { + List bookViewings = new List(); + + foreach (var viewing in viewings) + { + bookViewings.Add(new BookViewingViewModel + { + BuyerUserId = viewing.BuyerUserId, + PropertyId = viewing.PropertyId, + ViewingDateTime = viewing.ViewingDateTime + }); + } + + return bookViewings; + } + + private PropertyViewModel BuildPropertyViewModel(int id) + { + var property = _context.Properties.Find(id); + + return new PropertyViewModel + { + Description = property.Description, + Id = property.Id, + IsListedForSale = property.IsListedForSale, + NumberOfBedrooms = property.NumberOfBedrooms, + PropertyType = property.PropertyType, + StreetName = property.StreetName + }; + } + } +} \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Viewing/Builders/MyViewingsViewModelBuilder.cs b/OrangeBricks.Web/Controllers/Viewing/Builders/MyViewingsViewModelBuilder.cs new file mode 100644 index 0000000..989cb83 --- /dev/null +++ b/OrangeBricks.Web/Controllers/Viewing/Builders/MyViewingsViewModelBuilder.cs @@ -0,0 +1,48 @@ +using OrangeBricks.Web.Controllers.Viewing.ViewModels; +using OrangeBricks.Web.Models; +using System.Collections.Generic; +using System.Linq; + +namespace OrangeBricks.Web.Controllers.Viewing.Builders +{ + public class MyViewingsViewModelBuilder + { + private readonly IOrangeBricksContext _context; + + public MyViewingsViewModelBuilder(IOrangeBricksContext context) + { + _context = context; + } + + public MyViewingsViewModel Build(string buyerUserId) + { + var viewings = _context.Viewings.Where(v => v.BuyerUserId == buyerUserId).ToList(); + + return new MyViewingsViewModel + { + HasViewings = viewings.Any(), + Viewings = CreateViewingViewModel(viewings) + }; + } + + private IEnumerable CreateViewingViewModel(List viewings) + { + List bookViewings = new List(); + + foreach (var viewing in viewings) + { + var property = _context.Properties.Where(p => p.Id == viewing.PropertyId).SingleOrDefault(); + + bookViewings.Add(new BookViewingViewModel + { + BuyerUserId = viewing.BuyerUserId, + PropertyId = viewing.PropertyId, + ViewingDateTime = viewing.ViewingDateTime, + StreetName = property.StreetName, + PropertyType = property.PropertyType + }); + } + return bookViewings; + } + } +} \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Viewing/Commands/BookViewingCommand.cs b/OrangeBricks.Web/Controllers/Viewing/Commands/BookViewingCommand.cs new file mode 100644 index 0000000..3ea01e8 --- /dev/null +++ b/OrangeBricks.Web/Controllers/Viewing/Commands/BookViewingCommand.cs @@ -0,0 +1,11 @@ +using System; + +namespace OrangeBricks.Web.Controllers.Viewing.Commands +{ + public class BookViewingCommand + { + public int PropertyId { get; set; } + public DateTime ViewingDateTime { get; set; } + public string BuyerUserId { get; set; } + } +} \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Viewing/Commands/BookViewingCommandHandler.cs b/OrangeBricks.Web/Controllers/Viewing/Commands/BookViewingCommandHandler.cs new file mode 100644 index 0000000..21b427e --- /dev/null +++ b/OrangeBricks.Web/Controllers/Viewing/Commands/BookViewingCommandHandler.cs @@ -0,0 +1,36 @@ +using OrangeBricks.Web.Models; +using System.Collections.Generic; + +namespace OrangeBricks.Web.Controllers.Viewing.Commands +{ + public class BookViewingCommandHandler + { + private readonly IOrangeBricksContext _context; + + public BookViewingCommandHandler(IOrangeBricksContext context) + { + _context = context; + } + + public void Handle(BookViewingCommand command) + { + var property = _context.Properties.Find(command.PropertyId); + + var viewing = new Models.Viewing + { + ViewingDateTime = command.ViewingDateTime, + BuyerUserId = command.BuyerUserId, + PropertyId = property.Id + }; + + if (property.Viewings == null) + { + property.Viewings = new List(); + } + + property.Viewings.Add(viewing); + + _context.SaveChanges(); + } + } +} \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Viewing/ViewModels/BookViewingViewModel.cs b/OrangeBricks.Web/Controllers/Viewing/ViewModels/BookViewingViewModel.cs new file mode 100644 index 0000000..9212240 --- /dev/null +++ b/OrangeBricks.Web/Controllers/Viewing/ViewModels/BookViewingViewModel.cs @@ -0,0 +1,23 @@ +using OrangeBricks.Web.Controllers.Property.ViewModels; +using System; +using System.Collections.Generic; + +namespace OrangeBricks.Web.Controllers.Viewing.ViewModels +{ + public class BookViewingViewModel + { + public string PropertyType { get; set; } + public string StreetName { get; set; } + public DateTime ViewingDateTime { get; set; } + public int PropertyId { get; set; } + public string BuyerUserId { get; set; } + } + + public class BookedViewingsViewModel + { + public bool HasViewings { get; set; } + public PropertyViewModel Property { get; set; } + public IEnumerable Viewings { get; set; } + } + +} \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Viewing/ViewModels/MyViewingsViewModel.cs b/OrangeBricks.Web/Controllers/Viewing/ViewModels/MyViewingsViewModel.cs new file mode 100644 index 0000000..8067065 --- /dev/null +++ b/OrangeBricks.Web/Controllers/Viewing/ViewModels/MyViewingsViewModel.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace OrangeBricks.Web.Controllers.Viewing.ViewModels +{ + public class MyViewingsViewModel + { + public bool HasViewings { get; set; } + public IEnumerable Viewings { get; set; } + } +} \ No newline at end of file diff --git a/OrangeBricks.Web/Controllers/Viewing/ViewingController.cs b/OrangeBricks.Web/Controllers/Viewing/ViewingController.cs new file mode 100644 index 0000000..eca6b0a --- /dev/null +++ b/OrangeBricks.Web/Controllers/Viewing/ViewingController.cs @@ -0,0 +1,58 @@ +using Microsoft.AspNet.Identity; +using OrangeBricks.Web.Attributes; +using OrangeBricks.Web.Controllers.Property.Builders; +using OrangeBricks.Web.Controllers.Viewing.Builders; +using OrangeBricks.Web.Controllers.Viewing.Commands; +using OrangeBricks.Web.Models; +using System.Web.Mvc; + +namespace OrangeBricks.Web.Controllers.Viewing +{ + public class ViewingController : Controller + { + private readonly IOrangeBricksContext _context; + + public ViewingController(IOrangeBricksContext context) + { + _context = context; + } + + [OrangeBricksAuthorize(Roles = "Buyer")] + public ActionResult BookViewing(int id) + { + var builder = new BookViewingViewModelBuilder(_context); + var viewModel = builder.Build(id); + return View(viewModel); + } + + [HttpPost] + [OrangeBricksAuthorize(Roles = "Buyer")] + public ActionResult BookViewing(BookViewingCommand command) + { + var handler = new BookViewingCommandHandler(_context); + + command.BuyerUserId = User.Identity.GetUserId(); + + handler.Handle(command); + return RedirectToAction("Index","Property"); + } + + [OrangeBricksAuthorize(Roles = "Seller")] + public ActionResult ViewingsBooked(int id) + { + var builder = new BookedViewingsViewModelBuilder(_context); + var viewModel = builder.Build(id); + + return View(viewModel); + } + + [OrangeBricksAuthorize(Roles = "Buyer")] + public ActionResult MyViewings() + { + var builder = new MyViewingsViewModelBuilder(_context); + var viewModel = builder.Build(User.Identity.GetUserId()); + + return View(viewModel); + } + } +} \ No newline at end of file diff --git a/OrangeBricks.Web/Migrations/201604291520300_AddBuyerToOffers.Designer.cs b/OrangeBricks.Web/Migrations/201604291520300_AddBuyerToOffers.Designer.cs new file mode 100644 index 0000000..a0087d3 --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291520300_AddBuyerToOffers.Designer.cs @@ -0,0 +1,29 @@ +// +namespace OrangeBricks.Web.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] + public sealed partial class AddBuyerToOffers : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(AddBuyerToOffers)); + + string IMigrationMetadata.Id + { + get { return "201604291520300_AddBuyerToOffers"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/OrangeBricks.Web/Migrations/201604291520300_AddBuyerToOffers.cs b/OrangeBricks.Web/Migrations/201604291520300_AddBuyerToOffers.cs new file mode 100644 index 0000000..155191b --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291520300_AddBuyerToOffers.cs @@ -0,0 +1,18 @@ +namespace OrangeBricks.Web.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class AddBuyerToOffers : DbMigration + { + public override void Up() + { + AddColumn("dbo.Offers", "BuyerUserId", c => c.String()); + } + + public override void Down() + { + DropColumn("dbo.Offers", "BuyerUserId"); + } + } +} diff --git a/OrangeBricks.Web/Migrations/201604291520300_AddBuyerToOffers.resx b/OrangeBricks.Web/Migrations/201604291520300_AddBuyerToOffers.resx new file mode 100644 index 0000000..fdd1978 --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291520300_AddBuyerToOffers.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + H4sIAAAAAAAEAO1d227kuBF9D5B/EPSUBN5uXzKDidHehadtb4yML3B7NnkbsCV2WxldeiVq1kawX7YP+aT8QkiJlHiVqIu720EwL26RPCwWq8iqIovzn9/+PfvhOQqdbzDNgiQ+c48mh64DYy/xg3h95uZo9d0H94fvf/+72aUfPTs/sXonpB5uGWdn7hNCm9PpNPOeYASySRR4aZIlKzTxkmgK/GR6fHj4l+nR0RRiCBdjOc7sIY9REMHiB/45T2IPblAOwpvEh2FGv+OSRYHq3IIIZhvgwTP3LgXxGn5MA+9rNvk7XE7KJq5zHgYAk7OA4cp1QBwnCCBM7OnnDC5QmsTrxQZ/AOHjywbieisQZpAO4rSubjuew2MynmndkEF5eYaSqCPg0Qll0FRu3ovNbsVAzMJLzGr0QkZdsBFzcLWCqevIPZ3Ow5TUMrJ4UjQ8cOTig0ousPiQfwfOPA9RnsKzGOYoBeGBc58vw8D7G3x5TL7C+CzOw5AnEpOJy4QP+NN9mmxgil4e4IqSfu27zlRsN5UbVs24NuW4rmN0cuw6t7hzsAxhJQMcDxYoSeGPMIYpQNC/BwjBNCYYsOCi0rvU13mUYMlu668ZY4FJyTOGQcS5ZDz73hFunkIylPOKqgv88xErX2ekzxt/JKSP+QtMsV6m9dxgFcVLjuvcgOdPMF6jpzMX/+k6V8Ez9NkXCv45DvAKhRuhNJf6mk1rcW9UAkZRHz1gbf+vCg19sZ+kvxEmubMSpRAi8vf2+76AmZcGm3L13nbnt3m0hOnd6iP00ySJsoFrEQzDETW1Y+/X2acgw7J3laQLEFYz+TFJQgjidrhb8C1YF8IsARfrKWbNAwyL4uwp2NClltX8wupcpUn0kIScRNOiL4skTz1CVaIvfwTpGqKe6xNTMwLdtEbdVHbAeba5hWjCGk5KyKsUw/2SpF8nPOKBY92uXtKObZe0k6Pl6uTDu/fAP3n/Z3jybvvLm0ZGj44/vIq+NS8xx+/ej9KrUZSJbuolmZ/vL7RaLcxqqSLPmiqjiDSBGl+sGer+izZbTqftVcmA+mhC64r9StrA6H3dfq0l7nyzwZNXiBbhSB9bT4J4wybf9qTgMgJBOMKiaNHLPIlXQRpBv7NxIJurIMvwmuD/FWRPI/skOrPKy1Msqtilizav3tv9UxLD0i7cZl+jTc3jL8kV8LA3chmTVoPxPiXe1yRHl7FPHNjPyFP9WUuAUcg59zyYZVdYmKE/Hx4+IKvUro2SeQiCSG+VSOvpF1a1tkz0NRTrxFBNZ6E0kfopWQexHamsqpnUskYrqbRaV1IJmB2ltKaZ0KJCK51lrdFsvmKGxjf6Ctj9t/r2PV6zK5OxmL6RgkQWPf0EwnzsrnppQ7EIjK8NBez+a0NBJv78LfCJVWLhCrHKGN6qvt7Latc5ibJtq4MwzG13vp01wKwueSQfU7FDj+vsKgTr+tiu5+FVCTeeE4fHjecqfMF84tdpkck3kJjDbH5h7BdcLRaiM/dQmROhOjEON4gYmbT+UXP9B/hP6PH1j1Xel1zmP55nWeIFBSOl6D0Lg4pdYtPZaYmJ1odX9UnLDWZpQEwMPPl45JOJOhgzMjND5GMxGfZP8oC5wTWPWRMwMxHXFD2r6RNjuCKZR668hN3FFzCECDrnXnluPAeZB3xVafEU+h0I0zBOjcQ18pAc2EPMatIIEJc7wxoRxEhdhIPYCzYgbOWS1NLSYCJjr/qQSy7gBqsW7rCVEzad6wNvhICqH2lS2jjUQRANPpJpztscpnrelXjYVmSyxVMzyCX1Fl5FMJs5tgXhbGaJDQHGIPIuBJR6xrYCILvJ+yagkn9uEFBqwG9FQEWO7UBARZa8OQEtAyK28y9FR/ZNPMWwzPa39UZ27UA2BX7smWiWng5ug3CL2qqvR3CxJIXwGWl8GkwndWsy6ljJIkLAFxBJ1xpq90o0lBVbW2xOGRVAHURtxbeg0NijAiAawy0gsiQ3AdbS3gJKz8AVIEWrOxDHwteN1FFTpgMsCzU3wtINSILlBFGZ2vpWC1fLcPFF1o12n68akChKipa1+3gcEiNYXi/FYVqwQHcdQuVCmw9o6wVyI6Dy28CGBqeNw9HoxGCmmE5jVMbY+CRdvBJuYHQyGhjU4kEYmMQGMzqXmHa2c0lnGHcxjQdxSTJjDVxigxmdS1RG25mkMc46mGeDWCSaUiMpG4tvVrt+VTablvkM9MNsakh8mN2AzSaI11wiBP3iLMosiPl3i+6ZAVGJMfUyTYJARW3VE0pSsIZSKe4aU3oVpBm6AAgsAYnGzv1Iqaa1cQw7IOtSMGPUWWR7IatO/qZNmoK+GpuQIlzhAUbEsCzOzuRdR23nkIQUEIJUc043T8I8is0Grrk1SxrgEdg3exQWKedR2Dd7FC5bgAfiPttjcfkCPBb32R5LyBjg0YQCFW82laZaMfkVsVIcM1FIrUSYs3/GEOPK+O4uyeamryPM4rV/Hkcs6SLY9VV+Ubjr7/ZowuV8Hk4osMdT79vzoGpph3ELd++FkQsl9ojKfXphmuXCvVEmk33QXY8EH7S7LjU3fx19UuXeJPE7mh3VUhpzpirnvv9smSGMG5dG57prGztC4lFMx0o7mz2Ti9t9xuQoSvcJa0V4HQ2jt5V5APqpIwZ34VUB48o67KXCnWRhLxVKuuwpwsVjcVMRijpQyV8vFojkC3rhGTiqr2Hfg3qhmEdXS+2RNVeLeWhNcQ9sDc1yWQfnQ719LPghanEHB6C6iiyvpHu8hxkDW8M2sTIGPGwXM2C8zrI4zibI3e4U/Mn6c0csen9TAaPf91KkjFHAYSJVxv+HiZQBw7wGCZcjxSWo8UanGVO48Sg5jOYbn2a8boL72uIhRgm1UYL6VMY+ElA1sYpckQiowU+XDnFU/lgtLRWa/liV6747ZcaD3d6LXiNB2KLwg+IqwXVGrrFWV04txysHhlWpUOLDcpVKJqs4sRQPntHYbPtrOUqwtqziOky5sOH3gt3+aEIqTBY/h/MwgGSbZxVuQBysYIbKW6/u8eHRsfTWzv68ezPNMj/UxLaVx2/EGdtC/kZAWNqaodE1c0x4baboYtBbM30QlOdlSHAXjfK8TG8kzfMy8TeQek8g/UMEnv/IA1olNfLazrFKubBxHfvw+cz9V9Hu1Ln+xxeuKbl1jvXp1Dl0fm2moPsjNv8b8ixGiFsmruczMMPwNE+7DAM0PdfSS5k1j7UMo87wAMsyaCOu3zMnW5dixh01x2XAKyA1aNv6QAZN/io+H2B743Mc/Jzjgke8JJBFQs7ZHZfn+sDonr5hYc9VvOqWTcUFd+AMiy9bdKKmbDqAmt7vXbxdhRKekNCiSgrR/8WI9tVMs1NpXosYZGJoX4QYZrSorz6MhTcKC02vOvTBMr7ooDMhbQarf+GhD2nG1x367PDy2w72yxBrucOtRhO9fLOW6n7tTUoK/SBFV9PkO8ANSIXvIRlvLIt8tN3xXk0SHw17l6Jtkp7h+cljZCTTLIqOCchOzyybhjtfo2fUmK5JavWnKdC7hdSunlna+5KYXWer7DYfe5sp2A2XeGzdxS0J17DM6z3IFdSkHe0+v3rbsmY6a+8Qxtj/LOo9EzaajLb7XOltC5vpFH7Pha1TRvSeydqu9s8dS5r1Frrz/GY1RUieVjH1ldrRtfEv2tflmfWZ6y8TPO2l92DIC5WRa1NfAa+LdPhcBodt4m4peUo/YrGur/KJNn2amamzWtSNHdZVzJ2a89vkjhW1V/pVajR3222s1FxpHCyt09ytISu0qW+6ezX2Tes0923ItdxeyrYuSVsXCFGcXuWG0d4nZGvTOXXvBLRsM00ZBW8pAVsYScuTB20uReP91LeUbz0KU4TlwXDD8u2kV4/CkjFVp0M6tXotDps23H81h82rLFjXEOSyXww9waip6lzHq4QtkRJFrIoUOr2BCPjY4jnHdsMKeAgXk8Mf/rnHy2gJ/ev4LkebHOEhw2gZCgswsdGa+i9yxkWaZ3fFhZRsjCFgMgNyaHYXf8yDsH5G8koTrDVAEOOPHrWQuUTkyGX9UiHdJrElEGVfZbM+wmgTYrDsLl6Ab7APbVj8PsE18F7q0LwJpH0iRLbPLgKwTkGUUYy6Pf6JZdiPnr//L9vAU3pxcQAA + + + dbo + + \ No newline at end of file diff --git a/OrangeBricks.Web/Migrations/201604291725367_ExposePropertyId.Designer.cs b/OrangeBricks.Web/Migrations/201604291725367_ExposePropertyId.Designer.cs new file mode 100644 index 0000000..b9817c6 --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291725367_ExposePropertyId.Designer.cs @@ -0,0 +1,29 @@ +// +namespace OrangeBricks.Web.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] + public sealed partial class ExposePropertyId : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(ExposePropertyId)); + + string IMigrationMetadata.Id + { + get { return "201604291725367_ExposePropertyId"; } + } + + string IMigrationMetadata.Source + { + get { return Resources.GetString("Source"); } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/OrangeBricks.Web/Migrations/201604291725367_ExposePropertyId.cs b/OrangeBricks.Web/Migrations/201604291725367_ExposePropertyId.cs new file mode 100644 index 0000000..f09ca80 --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291725367_ExposePropertyId.cs @@ -0,0 +1,28 @@ +namespace OrangeBricks.Web.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class ExposePropertyId : DbMigration + { + public override void Up() + { + DropForeignKey("dbo.Offers", "Property_Id", "dbo.Properties"); + DropIndex("dbo.Offers", new[] { "Property_Id" }); + RenameColumn(table: "dbo.Offers", name: "Property_Id", newName: "PropertyId"); + AlterColumn("dbo.Offers", "PropertyId", c => c.Int(nullable: false)); + CreateIndex("dbo.Offers", "PropertyId"); + AddForeignKey("dbo.Offers", "PropertyId", "dbo.Properties", "Id", cascadeDelete: true); + } + + public override void Down() + { + DropForeignKey("dbo.Offers", "PropertyId", "dbo.Properties"); + DropIndex("dbo.Offers", new[] { "PropertyId" }); + AlterColumn("dbo.Offers", "PropertyId", c => c.Int()); + RenameColumn(table: "dbo.Offers", name: "PropertyId", newName: "Property_Id"); + CreateIndex("dbo.Offers", "Property_Id"); + AddForeignKey("dbo.Offers", "Property_Id", "dbo.Properties", "Id"); + } + } +} diff --git a/OrangeBricks.Web/Migrations/201604291725367_ExposePropertyId.resx b/OrangeBricks.Web/Migrations/201604291725367_ExposePropertyId.resx new file mode 100644 index 0000000..4343212 --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291725367_ExposePropertyId.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/OrangeBricks.Web/Migrations/201604291847346_AddViewing.Designer.cs b/OrangeBricks.Web/Migrations/201604291847346_AddViewing.Designer.cs new file mode 100644 index 0000000..926b9bc --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291847346_AddViewing.Designer.cs @@ -0,0 +1,29 @@ +// +namespace OrangeBricks.Web.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] + public sealed partial class AddViewing : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(AddViewing)); + + string IMigrationMetadata.Id + { + get { return "201604291847346_AddViewing"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/OrangeBricks.Web/Migrations/201604291847346_AddViewing.cs b/OrangeBricks.Web/Migrations/201604291847346_AddViewing.cs new file mode 100644 index 0000000..5f846f8 --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291847346_AddViewing.cs @@ -0,0 +1,32 @@ +namespace OrangeBricks.Web.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class AddViewing : DbMigration + { + public override void Up() + { + CreateTable( + "dbo.Viewings", + c => new + { + Id = c.Int(nullable: false, identity: true), + ViewingDateTime = c.DateTime(nullable: false), + PropertyId = c.Int(nullable: false), + BuyerUserId = c.String(), + }) + .PrimaryKey(t => t.Id) + .ForeignKey("dbo.Properties", t => t.PropertyId, cascadeDelete: true) + .Index(t => t.PropertyId); + + } + + public override void Down() + { + DropForeignKey("dbo.Viewings", "PropertyId", "dbo.Properties"); + DropIndex("dbo.Viewings", new[] { "PropertyId" }); + DropTable("dbo.Viewings"); + } + } +} diff --git a/OrangeBricks.Web/Migrations/201604291847346_AddViewing.resx b/OrangeBricks.Web/Migrations/201604291847346_AddViewing.resx new file mode 100644 index 0000000..abd65e6 --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291847346_AddViewing.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/OrangeBricks.Web/Migrations/201604291959297_UpdatedViewings.Designer.cs b/OrangeBricks.Web/Migrations/201604291959297_UpdatedViewings.Designer.cs new file mode 100644 index 0000000..1179374 --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291959297_UpdatedViewings.Designer.cs @@ -0,0 +1,29 @@ +// +namespace OrangeBricks.Web.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] + public sealed partial class UpdatedViewings : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(UpdatedViewings)); + + string IMigrationMetadata.Id + { + get { return "201604291959297_UpdatedViewings"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/OrangeBricks.Web/Migrations/201604291959297_UpdatedViewings.cs b/OrangeBricks.Web/Migrations/201604291959297_UpdatedViewings.cs new file mode 100644 index 0000000..ff4b76c --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291959297_UpdatedViewings.cs @@ -0,0 +1,16 @@ +namespace OrangeBricks.Web.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class UpdatedViewings : DbMigration + { + public override void Up() + { + } + + public override void Down() + { + } + } +} diff --git a/OrangeBricks.Web/Migrations/201604291959297_UpdatedViewings.resx b/OrangeBricks.Web/Migrations/201604291959297_UpdatedViewings.resx new file mode 100644 index 0000000..abd65e6 --- /dev/null +++ b/OrangeBricks.Web/Migrations/201604291959297_UpdatedViewings.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/OrangeBricks.Web/Models/ApplicationDbContext.cs b/OrangeBricks.Web/Models/ApplicationDbContext.cs index ede1a42..760244b 100644 --- a/OrangeBricks.Web/Models/ApplicationDbContext.cs +++ b/OrangeBricks.Web/Models/ApplicationDbContext.cs @@ -18,6 +18,7 @@ public static ApplicationDbContext Create() public IDbSet Properties { get; set; } public IDbSet Offers { get; set; } + public IDbSet Viewings { get; set; } public new void SaveChanges() { @@ -29,6 +30,7 @@ public interface IOrangeBricksContext { IDbSet Properties { get; set; } IDbSet Offers { get; set; } + IDbSet Viewings { get; set; } void SaveChanges(); } diff --git a/OrangeBricks.Web/Models/Offer.cs b/OrangeBricks.Web/Models/Offer.cs index 9a27065..6f1bfac 100644 --- a/OrangeBricks.Web/Models/Offer.cs +++ b/OrangeBricks.Web/Models/Offer.cs @@ -15,5 +15,10 @@ public class Offer public DateTime CreatedAt { get; set; } public DateTime UpdatedAt { get; set; } + + public string BuyerUserId { get; set; } + + public int PropertyId { get; set; } + } } \ No newline at end of file diff --git a/OrangeBricks.Web/Models/Property.cs b/OrangeBricks.Web/Models/Property.cs index 1ca65bb..253bea4 100644 --- a/OrangeBricks.Web/Models/Property.cs +++ b/OrangeBricks.Web/Models/Property.cs @@ -27,5 +27,7 @@ public class Property public bool IsListedForSale { get; set; } public ICollection Offers { get; set; } + + public ICollection Viewings { get; set; } } } \ No newline at end of file diff --git a/OrangeBricks.Web/Models/Viewing.cs b/OrangeBricks.Web/Models/Viewing.cs new file mode 100644 index 0000000..2cca429 --- /dev/null +++ b/OrangeBricks.Web/Models/Viewing.cs @@ -0,0 +1,15 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace OrangeBricks.Web.Models +{ + public class Viewing + { + [Key] + public int Id { get; set; } + public DateTime ViewingDateTime { get; set; } + public int PropertyId { get; set; } + public string BuyerUserId { get; set; } + + } +} \ No newline at end of file diff --git a/OrangeBricks.Web/OrangeBricks.Web.csproj b/OrangeBricks.Web/OrangeBricks.Web.csproj index ad369db..13c63a3 100644 --- a/OrangeBricks.Web/OrangeBricks.Web.csproj +++ b/OrangeBricks.Web/OrangeBricks.Web.csproj @@ -1,361 +1,404 @@ - - - - - Debug - AnyCPU - - - 2.0 - {09E3AF0B-9370-4C77-97B4-427F77EE842A} - {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - OrangeBricks.Web - OrangeBricks.Web - v4.5 - false - true - - - - - - - true - full - false - bin\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\ - TRACE - prompt - 4 - - - - False - ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll - - - False - ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll - - - - ..\packages\SimpleInjector.2.8.0\lib\net45\SimpleInjector.dll - - - ..\packages\SimpleInjector.Integration.Web.2.8.0\lib\net40\SimpleInjector.Integration.Web.dll - - - ..\packages\SimpleInjector.Integration.Web.Mvc.2.8.0\lib\net40\SimpleInjector.Integration.Web.Mvc.dll - - - - - - - - - - - - - - - - - - - - - True - ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll - - - - - - - True - ..\packages\Microsoft.AspNet.WebPages.3.2.0\lib\net45\System.Web.Helpers.dll - - - True - ..\packages\Microsoft.AspNet.Mvc.5.2.0\lib\net45\System.Web.Mvc.dll - - - ..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll - - - True - ..\packages\Microsoft.AspNet.Razor.3.2.0\lib\net45\System.Web.Razor.dll - - - True - ..\packages\Microsoft.AspNet.WebPages.3.2.0\lib\net45\System.Web.WebPages.dll - - - True - ..\packages\Microsoft.AspNet.WebPages.3.2.0\lib\net45\System.Web.WebPages.Deployment.dll - - - True - ..\packages\Microsoft.AspNet.WebPages.3.2.0\lib\net45\System.Web.WebPages.Razor.dll - - - True - ..\packages\WebGrease.1.5.2\lib\WebGrease.dll - - - True - ..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll - - - - - ..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll - - - ..\packages\Microsoft.AspNet.Identity.Core.2.1.0\lib\net45\Microsoft.AspNet.Identity.Core.dll - - - ..\packages\Microsoft.AspNet.Identity.Owin.2.1.0\lib\net45\Microsoft.AspNet.Identity.Owin.dll - - - ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.1.0\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll - - - ..\packages\Owin.1.0\lib\net40\Owin.dll - - - ..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll - - - ..\packages\Microsoft.Owin.Host.SystemWeb.2.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll - - - ..\packages\Microsoft.Owin.Security.2.1.0\lib\net45\Microsoft.Owin.Security.dll - - - ..\packages\Microsoft.Owin.Security.Facebook.2.1.0\lib\net45\Microsoft.Owin.Security.Facebook.dll - - - ..\packages\Microsoft.Owin.Security.Cookies.2.1.0\lib\net45\Microsoft.Owin.Security.Cookies.dll - - - ..\packages\Microsoft.Owin.Security.OAuth.2.1.0\lib\net45\Microsoft.Owin.Security.OAuth.dll - - - ..\packages\Microsoft.Owin.Security.Google.2.1.0\lib\net45\Microsoft.Owin.Security.Google.dll - - - ..\packages\Microsoft.Owin.Security.Twitter.2.1.0\lib\net45\Microsoft.Owin.Security.Twitter.dll - - - ..\packages\Microsoft.Owin.Security.MicrosoftAccount.2.1.0\lib\net45\Microsoft.Owin.Security.MicrosoftAccount.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Global.asax - - - - - 201505052030221_InitialCreate.cs - - - - 201505062111239_AddPropertiesTable.cs - - - - 201505100925257_AddPropertiesFields.cs - - - - 201505100940267_ChangeSellerRelationship.cs - - - - 201505101051033_AddPropertyForSaleOption.cs - - - - 201505101523118_AddOffersRelationship.cs - - - - 201505101607236_AddFieldsToOffers.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Web.config - - - Web.config - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 201505052030221_InitialCreate.cs - - - 201505062111239_AddPropertiesTable.cs - - - 201505100925257_AddPropertiesFields.cs - - - 201505100940267_ChangeSellerRelationship.cs - - - 201505101051033_AddPropertyForSaleOption.cs - - - 201505101523118_AddOffersRelationship.cs - - - 201505101607236_AddFieldsToOffers.cs - - - - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - - - - - - - - - True - True - 51527 - / - http://localhost:51527/ - False - False - - - False - - - - + + + + + Debug + AnyCPU + + + 2.0 + {09E3AF0B-9370-4C77-97B4-427F77EE842A} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + OrangeBricks.Web + OrangeBricks.Web + v4.5 + false + true + + + + + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + False + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll + + + False + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll + + + + ..\packages\SimpleInjector.2.8.0\lib\net45\SimpleInjector.dll + + + ..\packages\SimpleInjector.Integration.Web.2.8.0\lib\net40\SimpleInjector.Integration.Web.dll + + + ..\packages\SimpleInjector.Integration.Web.Mvc.2.8.0\lib\net40\SimpleInjector.Integration.Web.Mvc.dll + + + + + + + + + + + + + + + + + + + + + True + ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + + + + + + True + ..\packages\Microsoft.AspNet.WebPages.3.2.0\lib\net45\System.Web.Helpers.dll + + + True + ..\packages\Microsoft.AspNet.Mvc.5.2.0\lib\net45\System.Web.Mvc.dll + + + ..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll + + + True + ..\packages\Microsoft.AspNet.Razor.3.2.0\lib\net45\System.Web.Razor.dll + + + True + ..\packages\Microsoft.AspNet.WebPages.3.2.0\lib\net45\System.Web.WebPages.dll + + + True + ..\packages\Microsoft.AspNet.WebPages.3.2.0\lib\net45\System.Web.WebPages.Deployment.dll + + + True + ..\packages\Microsoft.AspNet.WebPages.3.2.0\lib\net45\System.Web.WebPages.Razor.dll + + + True + ..\packages\WebGrease.1.5.2\lib\WebGrease.dll + + + True + ..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll + + + + + ..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\packages\Microsoft.AspNet.Identity.Core.2.1.0\lib\net45\Microsoft.AspNet.Identity.Core.dll + + + ..\packages\Microsoft.AspNet.Identity.Owin.2.1.0\lib\net45\Microsoft.AspNet.Identity.Owin.dll + + + ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.1.0\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll + + + ..\packages\Owin.1.0\lib\net40\Owin.dll + + + ..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll + + + ..\packages\Microsoft.Owin.Host.SystemWeb.2.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll + + + ..\packages\Microsoft.Owin.Security.2.1.0\lib\net45\Microsoft.Owin.Security.dll + + + ..\packages\Microsoft.Owin.Security.Facebook.2.1.0\lib\net45\Microsoft.Owin.Security.Facebook.dll + + + ..\packages\Microsoft.Owin.Security.Cookies.2.1.0\lib\net45\Microsoft.Owin.Security.Cookies.dll + + + ..\packages\Microsoft.Owin.Security.OAuth.2.1.0\lib\net45\Microsoft.Owin.Security.OAuth.dll + + + ..\packages\Microsoft.Owin.Security.Google.2.1.0\lib\net45\Microsoft.Owin.Security.Google.dll + + + ..\packages\Microsoft.Owin.Security.Twitter.2.1.0\lib\net45\Microsoft.Owin.Security.Twitter.dll + + + ..\packages\Microsoft.Owin.Security.MicrosoftAccount.2.1.0\lib\net45\Microsoft.Owin.Security.MicrosoftAccount.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Global.asax + + + + + 201505052030221_InitialCreate.cs + + + + 201505062111239_AddPropertiesTable.cs + + + + 201505100925257_AddPropertiesFields.cs + + + + 201505100940267_ChangeSellerRelationship.cs + + + + 201505101051033_AddPropertyForSaleOption.cs + + + + 201505101523118_AddOffersRelationship.cs + + + + 201505101607236_AddFieldsToOffers.cs + + + + 201604291520300_AddBuyerToOffers.cs + + + + 201604291725367_ExposePropertyId.cs + + + + 201604291847346_AddViewing.cs + + + + 201604291959297_UpdatedViewings.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web.config + + + Web.config + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 201505052030221_InitialCreate.cs + + + 201505062111239_AddPropertiesTable.cs + + + 201505100925257_AddPropertiesFields.cs + + + 201505100940267_ChangeSellerRelationship.cs + + + 201505101051033_AddPropertyForSaleOption.cs + + + 201505101523118_AddOffersRelationship.cs + + + 201505101607236_AddFieldsToOffers.cs + + + 201604291520300_AddBuyerToOffers.cs + + + 201604291725367_ExposePropertyId.cs + + + 201604291847346_AddViewing.cs + + + 201604291959297_UpdatedViewings.cs + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + + + + + + + True + True + 51527 + / + http://localhost:51527/ + False + False + + + False + + + + + --> \ No newline at end of file diff --git a/OrangeBricks.Web/Views/Offers/MyOffers.cshtml b/OrangeBricks.Web/Views/Offers/MyOffers.cshtml new file mode 100644 index 0000000..a54aa45 --- /dev/null +++ b/OrangeBricks.Web/Views/Offers/MyOffers.cshtml @@ -0,0 +1,24 @@ +@model OrangeBricks.Web.Controllers.Offers.ViewModels.MyOffersViewModel + +@{ + ViewBag.Title = "Offers you have made"; + Layout = "~/Views/Shared/_Layout.cshtml"; +} + +

@ViewBag.Title

+ +

View your offer status here

+ +@{ + foreach (var offer in Model.MyOffers) + { +
+
+

Property @offer.StreetName

+

Offer Amount: £@offer.Amount

+

Offer Made At: @offer.CreatedAt.ToLongTimeString() on @offer.CreatedAt.ToShortDateString()

+

Status: @offer.Status

+
+ } + +} \ No newline at end of file diff --git a/OrangeBricks.Web/Views/Property/Index.cshtml b/OrangeBricks.Web/Views/Property/Index.cshtml index 07c0b93..b9880a3 100644 --- a/OrangeBricks.Web/Views/Property/Index.cshtml +++ b/OrangeBricks.Web/Views/Property/Index.cshtml @@ -30,6 +30,9 @@

@property.NumberOfBedrooms bedroom @property.PropertyType

@property.Description

+ + Book Viewing + Make Offer diff --git a/OrangeBricks.Web/Views/Property/MyProperties.cshtml b/OrangeBricks.Web/Views/Property/MyProperties.cshtml index af2d1f2..8003a7c 100644 --- a/OrangeBricks.Web/Views/Property/MyProperties.cshtml +++ b/OrangeBricks.Web/Views/Property/MyProperties.cshtml @@ -1,30 +1,32 @@ -@model OrangeBricks.Web.Controllers.Property.ViewModels.MyPropertiesViewModel - -@{ - ViewBag.Title = "My Properties"; - Layout = "~/Views/Shared/_Layout.cshtml"; -} - -

My Properties

- -

Here is a list of your properties:

- -@foreach (var property in Model.Properties) -{ -
-

@property.StreetName

-

@property.NumberOfBedrooms bedroom @property.PropertyType

-

@property.Description

- - View offers that have been made on this property... - - if (!property.IsListedForSale) - { - using (Html.BeginForm("ListForSale", "Property")) - { - @Html.Hidden("PropertyId", property.Id) - - } - } - +@model OrangeBricks.Web.Controllers.Property.ViewModels.MyPropertiesViewModel + +@{ + ViewBag.Title = "My Properties"; + Layout = "~/Views/Shared/_Layout.cshtml"; +} + +

My Properties

+ +

Here is a list of your properties:

+ +@foreach (var property in Model.Properties) +{ +
+

@property.StreetName

+

@property.NumberOfBedrooms bedroom @property.PropertyType

+

@property.Description

+ +

View offers that have been made on this property...

+ +

Viewing booked on this property...

+ + if (!property.IsListedForSale) + { + using (Html.BeginForm("ListForSale", "Property")) + { + @Html.Hidden("PropertyId", property.Id) + + } + } + } \ No newline at end of file diff --git a/OrangeBricks.Web/Views/Shared/_Layout.cshtml b/OrangeBricks.Web/Views/Shared/_Layout.cshtml index c27dd77..5e2e768 100644 --- a/OrangeBricks.Web/Views/Shared/_Layout.cshtml +++ b/OrangeBricks.Web/Views/Shared/_Layout.cshtml @@ -1,51 +1,57 @@ - - - - - - @ViewBag.Title - Orange Bricks - @Styles.Render("~/Content/css") - @Scripts.Render("~/bundles/modernizr") - - - - -
- @RenderBody() -
-
-

© @DateTime.Now.Year - Orange Bricks

-
-
- - @Scripts.Render("~/bundles/jquery") - @Scripts.Render("~/bundles/bootstrap") - @RenderSection("scripts", required: false) - - + + + + + + @ViewBag.Title - Orange Bricks + @Styles.Render("~/Content/css") + @Scripts.Render("~/bundles/modernizr") + + + + +
+ @RenderBody() +
+
+

© @DateTime.Now.Year - Orange Bricks

+
+
+ + @Scripts.Render("~/bundles/jquery") + @Scripts.Render("~/bundles/bootstrap") + @RenderSection("scripts", required: false) + + diff --git a/OrangeBricks.Web/Views/Viewing/BookViewing.cshtml b/OrangeBricks.Web/Views/Viewing/BookViewing.cshtml new file mode 100644 index 0000000..21cc3e4 --- /dev/null +++ b/OrangeBricks.Web/Views/Viewing/BookViewing.cshtml @@ -0,0 +1,22 @@ +@model OrangeBricks.Web.Controllers.Viewing.ViewModels.BookViewingViewModel +@{ + ViewBag.Title = "Book Viewing"; + Layout = "~/Views/Shared/_Layout.cshtml"; +} +

@ViewBag.Title

+

Book a viewing for the @Model.PropertyType on @Model.StreetName?

+@using (Html.BeginForm("BookViewing", "Viewing", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) +{ +
+ @Html.LabelFor(m => m.ViewingDateTime, "Date and Time", new { @class = "col-md-2 control-label" }) +
+ @Html.Hidden("PropertyId", Model.PropertyId) + @Html.TextBoxFor(m => m.ViewingDateTime, new { @class = "form-control" }) +
+
+
+
+ +
+
+} \ No newline at end of file diff --git a/OrangeBricks.Web/Views/Viewing/MyViewings.cshtml b/OrangeBricks.Web/Views/Viewing/MyViewings.cshtml new file mode 100644 index 0000000..beab0ba --- /dev/null +++ b/OrangeBricks.Web/Views/Viewing/MyViewings.cshtml @@ -0,0 +1,26 @@ +@model OrangeBricks.Web.Controllers.Viewing.ViewModels.MyViewingsViewModel +@{ + ViewBag.Title = "Viewings booked"; + Layout = "~/Views/Shared/_Layout.cshtml"; +} +

@ViewBag.Title

+

Here you can see the viewings you have booked.

+ +@if (Model.HasViewings) +{ + foreach (var viewing in Model.Viewings) + { +
+
+

Property type: @viewing.PropertyType

+

Street name: @viewing.StreetName

+

Viewing Date Time: @viewing.ViewingDateTime

+
+ } +} +else +{ + +} \ No newline at end of file diff --git a/OrangeBricks.Web/Views/Viewing/ViewingsBooked.cshtml b/OrangeBricks.Web/Views/Viewing/ViewingsBooked.cshtml new file mode 100644 index 0000000..6b0bee4 --- /dev/null +++ b/OrangeBricks.Web/Views/Viewing/ViewingsBooked.cshtml @@ -0,0 +1,27 @@ +@model OrangeBricks.Web.Controllers.Viewing.ViewModels.BookedViewingsViewModel +@{ + ViewBag.Title = "Viewings for you Property"; + Layout = "~/Views/Shared/_Layout.cshtml"; +} +

@ViewBag.Title

+

Here you can see the viewings that have been booked.

+

Property type: @Model.Property.PropertyType

+

Street name: @Model.Property.StreetName

+@if (Model.HasViewings) +{ +

There are @Model.Viewings.Count() viewings booked on this property

+ + foreach (var viewing in Model.Viewings) + { +
+
+

Viewing Date Time: @viewing.ViewingDateTime

+
+ } +} +else +{ + +}