private void AssignShipmentToDrone(ShipmentInfo shipment, DroneInfo drone)
 {
     _logger.Log("Assignig shipment #{0} to drone {1}", shipment.Id, drone.Name);
     shipment.DroneId = drone.Id;
     _shipmentBll.UpdateShipment(shipment);
     _shipmentBll.AssignDroneToShipment(drone.Id, shipment.Id);
 }
        public int AddShipment(ShipmentInfo shipment)
        {
            shipment.SourceAddress.Id = _addressBll.AddAddress(shipment.SourceAddress);
            shipment.DestinationAddress.Id = _addressBll.AddAddress(shipment.DestinationAddress);
            shipment.Id = _shipmentDal.AddShipment(shipment);

            return shipment.Id;
        }
        public int AddShipment(ShipmentInfo shipment)
        {
            int id = 0;

            using (SqlDataReader rdr = SqlHelper.ExecuteReader(_connString, INSERT_SHIPMENT,
                shipment.SourceAddress.Id, shipment.DestinationAddress.Id, shipment.Weight, shipment.Status)) {
                if (rdr.Read())
                    id = Convert.ToInt32(rdr.GetDecimal(0));
            }

            shipment.Id = id;

            return id;
        }
        public ActionResult AddShipment(
              string sourceAddress, string sourceCity, string sourcePostalCode
            , string destinationAddress, string destinationCity, string destinationPostalCode
            , decimal weight)
        {
            var shipment = new ShipmentInfo {
                SourceAddress = new AddressInfo{Address1 = sourceAddress, City = sourceCity, ZipCode = sourcePostalCode},
                DestinationAddress = new AddressInfo{Address1 = destinationAddress, City = destinationCity, ZipCode = destinationPostalCode},
                Weight = weight
            };

            var bll = new ShipmentBLL();

            bll.AddShipment(shipment);

            return RedirectToAction("Index");
        }
Esempio n. 5
0
        static void Main(string[] args)
        {
            ShipmentBLL shipBll = new ShipmentBLL();
            DroneBLL droneBll = new DroneBLL();

            ShipmentInfo shipment = new ShipmentInfo();
            shipment.DestinationAddress = new AddressInfo();
            shipment.DestinationAddress.Address1 = "335 Laird Road";
            shipment.DestinationAddress.City = "Guelph";
            shipment.DestinationAddress.Country = "Canada";
            shipment.DestinationAddress.State = "Ontario";
            shipment.DestinationAddress.ZipCode = "N1H 6J3";
            shipment.DestinationAddress.Latitude = 43.50501M;
            shipment.DestinationAddress.Longitude = -80.26827M;
            shipment.Weight = 1M;
            shipment.Status = ShipmentStatus.AwaitingShipment;
            shipment.SourceAddress = new AddressInfo();
            shipment.SourceAddress.Address1 = "8725 Yonge St";
            shipment.SourceAddress.City = "Richmond Hill";
            shipment.SourceAddress.Country = "Canada";
            shipment.SourceAddress.State = "Ontario";
            shipment.SourceAddress.ZipCode = "L4C 6Z1";
            shipment.SourceAddress.Latitude = 43.84292M;
            shipment.SourceAddress.Longitude = -79.43053M;
            shipBll.AddShipment(shipment);

            DroneInfo drone = new DroneInfo();
            drone.Latitude = 43.86071M;
            drone.Longitude = -79.37736M;
            drone.MaxWeight = 1000M;
            drone.Name = "DRONE 001";
            drone.Status = DroneStatus.Available;
            droneBll.AddDrone(drone);

            shipBll.AssignDroneToShipment(drone.Id, shipment.Id);
        }
 private DroneInfo GetNearestDrone(ShipmentInfo shipment)
 {
     _logger.Log("Getting the nearest drone");
     var drones = GetAvailableDrones(shipment.Weight);
     if (!drones.Any()) {
         _logger.Log("No drone is available that can handle shipment's weight ({0})", shipment.Weight);
         return null;
     }
     double shortestDistance = double.MaxValue;
     DroneInfo candidDrone = null;
     foreach (var drone in drones) {
         double distance = _addressBll.GetDistanceKm(
             (double) shipment.SourceAddress.Latitude, (double) shipment.SourceAddress.Longitude,
             (double) drone.Latitude, (double) drone.Longitude);
         _logger.Log("Drone {0} distance: {1}km", drone.Name, distance);
         if (distance < shortestDistance) {
             _logger.Log("Drone {0} is a candidate", drone.Name);
             shortestDistance = distance;
             candidDrone = drone;
         }
     }
     _logger.Log("Drone {0} is the best choice", candidDrone.Name);
     return candidDrone;
 }
 public void UpdateShipment(ShipmentInfo shipment)
 {
     _shipmentDal.UpdateShipment(shipment);
     _addressBll.UpdateAddress(shipment.SourceAddress);
     _addressBll.UpdateAddress(shipment.DestinationAddress);
 }
        private ShipmentInfo FillFromReader(SqlDataReader rdr)
        {
            ShipmentInfo shipment = new ShipmentInfo();

            shipment.Id = (int)rdr["Id"];

            if (rdr["Status"] != DBNull.Value) {
                shipment.Status = (ShipmentStatus)((int)rdr["Status"]);
            }

            if (rdr["Weight"] != DBNull.Value) {
                shipment.Weight = (decimal)rdr["Weight"];
            }

            int sourceAddressId = (int)rdr["SourceAddressId"];
            shipment.SourceAddress = _addressDal.GetAddress(sourceAddressId);

            int destinationAddressId = (int)rdr["DestinationAddressId"];
            shipment.DestinationAddress = _addressDal.GetAddress(destinationAddressId);

            if (rdr["DroneId"] != DBNull.Value) {
                shipment.DroneId = (int) rdr["DroneId"];
            }

            return shipment;
        }
 public void UpdateShipment(ShipmentInfo shipment)
 {
     SqlHelper.ExecuteNonQuery(_connString, UPDATE_SHIPMENT, shipment.Id,
         shipment.SourceAddress.Id, shipment.DestinationAddress.Id, shipment.Weight, shipment.Status, shipment.DroneId);
 }