예제 #1
0
 public void UpdateTrackingOrder(TrackingOrder trackingOrder)
 {
     trackingOrderRepository.Update(trackingOrder);
 }
예제 #2
0
 public void CreateTrackingOrder(TrackingOrder trackingOrder)
 {
     trackingOrderRepository.Add(trackingOrder);
 }
예제 #3
0
        public IHttpActionResult UpdateTimeline(TrackingOrder model)
        {
            try
            {
                model.IsActive    = true;
                model.IsDelete    = false;
                model.DateCreated = DateTime.UtcNow.AddHours(7);
                trackingOrderService.CreateTrackingOrder(model);
                Order order = orderService.GetOrder(model.OrderId);
                if (order != null)
                {
                    User buyer = order.Buyer;
                    if (buyer != null)
                    {
                        if (model.Status == (int)TrackingOrderType.Cancel)
                        {
                            buyer.Current_Money += order.Offer.Post.Deposit;
                            Post post = order.Offer.Post;
                            transactionService.CreateTransaction(new Transaction()
                            {
                                PostId      = post.Id,
                                IsActive    = true,
                                IsDelete    = false,
                                IsSuccess   = true,
                                UserId      = buyer.Id,
                                DateCreated = DateTime.UtcNow.AddHours(7),
                                Value       = post.Deposit,
                                Type        = Transaction.TypeTrans.PostOut,
                            });
                            post.Deposit = 0;
                            userService.UpdateUser(buyer);
                            postService.UpdatePost(post);
                        }
                    }
                    if (buyer.SignalConnect != null)
                    {
                        string status = "Đang ở ";
                        switch (model.Status)
                        {
                        case (int)TrackingOrderType.Started:
                            status = "Đang ở " + model.Description;
                            break;

                        case (int)TrackingOrderType.Arrived:
                            status = "Đã mua được hàng";
                            break;

                        case (int)TrackingOrderType.Buyed:
                            status = "Có thể giao hàng";
                            break;

                        case (int)TrackingOrderType.CameBack:
                            status = "Không thể mua hàng";
                            break;

                        case (int)TrackingOrderType.CanShipping:
                            status = "Đơn hàng đã bị hủy";
                            break;

                        case (int)TrackingOrderType.Finished:
                            status = "Giao hàng thành công";
                            break;
                        }


                        notificationService.CreateNotification(new Notification()
                        {
                            DateCreated = DateTime.UtcNow.AddHours(7),
                            IsActive    = true,
                            IsDelete    = false,
                            IsRead      = true,
                            Message     = status,
                            Title       = "Đơn hàng " + order.Id,
                            UserId      = buyer.Id
                        });
                        notificationService.SaveNotification();
                        HubUtilities.GetHub().Clients.Client(buyer.SignalConnect).newTimeline(status, order.Id);
                    }
                }

                trackingOrderService.SaveTrackingOrder();
                TrackingOrderViewModel tracking = new TrackingOrderViewModel()
                {
                    DateCreated = model.DateCreated.GetValueOrDefault().ToString("HH:mm dd/MM/yyyy"),
                    Status      = model.Status,
                    Longitude   = model.Longitude,
                    Latitude    = model.Latitude,
                    OrderId     = model.OrderId,
                    Description = model.Description
                };
                return(Ok(tracking));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.ToString()));
            }
        }