Exemple #1
0
        public async Task <object> Update([FromBody] Messages.Tracking.UpdateTrackingForOrderCommand cmd, int id)
        {
            var result = await tracking.UpdateTrackingOrder(id, cmd.CurrentLocation, cmd.EstimatedArrival, cmd.Progress, GetJwt());

            if (result is Messages.Tracking.TrackingOrderUpdateSuccess)
            {
                if (cmd.Progress == 100)
                {
                    var resultFinishedOrder = await orders.CompleteOrder(id);

                    Messages.Order.OrderDeliveredSuccess orderComplete =
                        (Order.OrderDeliveredSuccess)resultFinishedOrder;
                }
            }

            /*
             * if (result is Messages.Tracking.TrackingOrderUpdateFail)
             * {
             *  return result;
             * }*
             *
             * return null;
             */
            return(result);
        }
Exemple #2
0
        private void UpdateTrackingForOrder(Messages.Tracking.UpdateTrackingForOrderCommand cmd)
        {
            int userId = getUserIdFromJwt(cmd.JWT);

            if (userId < 1)
            {
                Sender.Tell(new Messages.Unauthorised());
            }

            using (MyContext context = MyContext.Connect(GetPath()))
            {
                var trackedOrder = GetTrackingOrderForOrder(cmd.OrderId, context);
                if (trackedOrder == null)
                {
                    Sender.Tell(new Unauthorised()); // TODO: error TrackingOrderUpdateFail
                    return;
                }

                /*
                 * //anyone can update this. TODO: check role, not the userId
                 * if (userId != trackedOrder.UserId)
                 * {
                 *  Sender.Tell(new Unauthorised());
                 *  return;
                 * }*/

                trackedOrder.CurrentLocation = cmd.CurrentLocation;
                trackedOrder.Progress        = cmd.Progress;
                if (cmd.EstimatedArrival != null)
                {
                    trackedOrder.EstimatedArrival = cmd.EstimatedArrival ?? default(DateTime);
                }


                context.SaveChanges();

                Sender.Tell(new Messages.Tracking.TrackingOrderUpdateSuccess());
            }
        }