public void CreateListing_saves_a_listing_via_context()
        {
            var mockListing = new Mock<Listing>();
            var mockListingLocation = new ListingLocation();
            mockListingLocation.ListingLocationLat = "59.11";
            mockListingLocation.ListingLocationLng = "17.22";
            ICollection<ListingLocation> mockListingLocations = new List<ListingLocation>();
            mockListingLocations.Add(mockListingLocation);
            //Mock the properties
            mockListing.SetupProperty(listing => listing.Title, "Test Insert Listing");
            //.SetupProperty(listing => listing.ListingLocations, mockListingLocations);

            var mockSet = new Mock<DbSet<Listing>>();
            var mockSet1 = new Mock<DbSet<ListingLocation>>();

            var mockContext = new Mock<DbConnectionContext>();
            mockContext.Setup(m => m.Listings).Returns(mockSet.Object);

            var service = new EF_ListingRepository(mockContext.Object);
            service.CreateNewListing(mockListing.Object);

            mockSet.Verify(m => m.Add(It.IsAny<Listing>()), Times.Once());
            mockContext.Verify(m => m.SaveChanges(), Times.Once());
        }
        public ActionResult Create(
            [Bind(Include = "Id, DateAvailable ,Address, Description, Title, Telephone, Email")] Listing listing)
        {
            if (ModelState.IsValid)
            {
                listing.DateListed = DateTime.Now;
                listing.Status = SiteConstants.PropertyStatus.ForRent;
                listing.ListingExpiry = DateTime.Now.AddMonths(1);
                listing.ListingUpdated = listing.DateListed;
                listing.ListingAddedBy = Profile.UserName;
                listing.ListingUpdatedBy = listing.ListingAddedBy;
                listing.ListingType = SiteConstants.ListingType.ForRent;
                listing.ListingLocations = new List<ListingLocation>();

                var i = 1;
                var loc = "Pin-" + i + "-lat";
                var lat = Request[loc];
                var loclng = "Pin-" + i + "-lng";
                var lng = Request[loclng];
                if (lat != null && lng != null)
                {
                    var x = new ListingLocation();
                    x.ListingId = 0;
                    x.ListingLocationLat = lat;
                    x.ListingLocationLng = lng;
                    listing.ListingLocations.Add(x);
                }
                while (lat != null && lng != null)
                {
                    i++;
                    loc = "Pin-" + i + "-lat";
                    loclng = "Pin-" + i + "-lng";

                    lat = Request[loc];
                    lng = Request[loclng];
                    if (lat != null && lng != null)
                    {
                        var x = new ListingLocation();
                        x.ListingLocationLat = lat;
                        x.ListingLocationLng = lng;
                        x.ListingLocationPoint = GeoLocation.CreatePoint(Convert.ToDouble(lat), Convert.ToDouble(lng));
                        listing.ListingLocations.Add(x);
                    }
                }

                db.Listings.Add(listing);
                db.SaveChanges();

                string mystring = ViewBag.Files;
                if (mystring != null)
                {
                    var query = from val in mystring.Split(',')
                        select int.Parse(val);
                    foreach (var num in query)
                    {
                        var original = db.ListingsImageGalleries.Find(num);

                        if (original != null)
                        {
                            original.ListingID = listing.Id;
                            db.SaveChanges();
                        }
                    }
                }

                return RedirectToAction("Index");
            }

            return View(listing);
        }