Ejemplo n.º 1
0
        public OperationResult<Shipment> AddShipment(Shipment shipment)
        {
            var affiliate = _affiliateRepository.GetSingle(shipment.AffiliateKey);
            var shipmentType = _shipmentTypeRepository.GetSingle(shipment.ShipmentTypeKey);

            if (affiliate == null || shipmentType == null) {

                return new OperationResult<Shipment>(false);
            }

            shipment.Key = Guid.NewGuid();
            shipment.CreatedOn = DateTime.Now;

            _shipmentRepository.Add(shipment);
            _shipmentRepository.Save();

            // Add the first state for this shipment
            var shipmentState = InsertFirstShipmentState(shipment.Key);

            // Add the down level references manual so that
            // we don't have to have a trip to database to get them
            shipment.ShipmentType = shipmentType;
            shipment.ShipmentStates = new List<ShipmentState> { shipmentState };

            return new OperationResult<Shipment>(true) {
                Entity = shipment
            };
        }
        internal static Shipment ToShipment(this ShipmentByAffiliateUpdateRequestModel requestModel, Shipment existingShipment) {

            existingShipment.Price = requestModel.Price.Value;
            existingShipment.ReceiverName = requestModel.ReceiverName;
            existingShipment.ReceiverSurname = requestModel.ReceiverSurname;
            existingShipment.ReceiverAddress = requestModel.ReceiverAddress;
            existingShipment.ReceiverZipCode = requestModel.ReceiverZipCode;
            existingShipment.ReceiverCity = requestModel.ReceiverCity;
            existingShipment.ReceiverCountry = requestModel.ReceiverCountry;
            existingShipment.ReceiverTelephone = requestModel.ReceiverTelephone;
            existingShipment.ReceiverEmail = requestModel.ReceiverEmail;

            return existingShipment;
        }
        private bool IsShipmentRemovable(Shipment shipment)
        {

            var latestStatus = (from shipmentState in shipment.ShipmentStates.ToList()
                                orderby shipmentState.ShipmentStatus descending
                                select shipmentState).First();

            return latestStatus.ShipmentStatus < ShipmentStatus.InTransit;
        }
        public OperationResult RemoveShipment(Shipment shipment)
        {

            if (IsShipmentRemovable(shipment))
            {

                _shipmentRepository.DeleteGraph(shipment);
                _shipmentRepository.Save();

                return new OperationResult(true);
            }

            return new OperationResult(false);
        }
        public Shipment UpdateShipment(Shipment shipment)
        {

            _shipmentRepository.Edit(shipment);
            _shipmentRepository.Save();

            // Get the shipment seperately so that 
            // we would have down level references such as ShipmentStates.
            var updatedShipment = GetShipment(shipment.Key);

            return shipment;
        }