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); }
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()); } }