public ActionResult Save(Package package)
        {
            if (!ModelState.IsValid)
            {
                var viewModel = new PackageFormViewModel(package);
                return(View("PackageForm", viewModel));
            }

            try
            {
                var json =
                    new WebClient().DownloadString("https://maps.googleapis.com/maps/api/geocode/json?address=" +
                                                   package.Destination +
                                                   "&key=AIzaSyBMVIteB6a_vtVSunhpk56yZWeTSGN2CkM");
                var data = JObject.Parse(json);
                package.Latitude =
                    (double)data["results"][0].SelectToken("geometry").SelectToken("location").SelectToken("lat");
                package.Longitude =
                    (double)data["results"][0].SelectToken("geometry").SelectToken("location").SelectToken("lng");
            }
            catch (Exception e)
            {
                var viewModel = new PackageFormViewModel(package);
                ModelState.AddModelError("error_msg", "Destination does not exist");
                return(View("PackageForm", viewModel));
            }

            if (package.Id == 0)
            {
                _context.Packages.Add(package);
            }
            else
            {
                var packageInDb = _context.Packages.Single(p => p.Id == package.Id);
                packageInDb.Content     = package.Content;
                packageInDb.Destination = package.Destination;
                packageInDb.Status      = package.Status;
                if (package.Status == "Undelivered")
                {
                    packageInDb.DateDelivered = null;
                }
                else
                {
                    try
                    {
                        packageInDb.Status        = "Delivered";
                        packageInDb.DateDelivered = DateTime.Now;
                        // if route already been deleted catch
                        var deliveryRouteToDelete = _context.DeliveryRoutes.Single(dr => dr.Package.Id == package.Id);
                        _context.DeliveryRoutes.Remove(deliveryRouteToDelete);
                    }
                    catch (Exception e)
                    {
                    }
                }
            }
            _context.SaveChanges();

            return(RedirectToAction("Index", "Package"));
        }
        public ActionResult Edit(int id)
        {
            var package = _context.Packages.SingleOrDefault(p => p.Id == id);

            if (package == null)
            {
                return(HttpNotFound());
            }
            var viewModel = new PackageFormViewModel(package);

            return(View("PackageForm", viewModel));
        }
예제 #3
0
        public ActionResult New()
        {
            var sizeOfPackage   = _context.SizeOfPackages.ToList();
            var chargeOfPackage = _context.ChargeOfPackages.ToList();

            var viewModel = new PackageFormViewModel
            {
                SizeOfPackages   = sizeOfPackage,
                ChargeOfPackages = chargeOfPackage
            };

            return(View("PackagesForm", viewModel));
        }
예제 #4
0
        public ActionResult Save(Package package)
        {
            if (!ModelState.IsValid)
            {
                var viewModel = new PackageFormViewModel(package)
                {
                    SizeOfPackages   = _context.SizeOfPackages.ToList(),
                    ChargeOfPackages = _context.ChargeOfPackages.ToList()
                };

                return(View("PackagesForm", viewModel));
            }

            if (package.Id == 0)
            {
                _context.Packages.Add(package);
            }
            else
            {
                var packageInDb = _context.Packages.Single(p => p.Id == package.Id);
                packageInDb.Sender            = package.Sender;
                packageInDb.Receiver          = package.Receiver;
                packageInDb.ReceiverAddress   = package.ReceiverAddress;
                packageInDb.SerialNumber      = package.SerialNumber;
                packageInDb.DateLeft          = package.DateLeft;
                packageInDb.Phone             = package.Phone;
                packageInDb.SizeOfPackageId   = package.SizeOfPackageId;
                packageInDb.ChargeOfPackageId = package.ChargeOfPackageId;
            }


            _context.SaveChanges();


            return(RedirectToAction("Index", "Packages"));
        }
        public ActionResult New()
        {
            var viewModel = new PackageFormViewModel();

            return(View("PackageForm", viewModel));
        }