Exemple #1
0
        private void Mail_Test(int OrderID)
        {
            Packages package = db.Packages.First(p => p.IsEnable.Value && p.OrderID.Value.Equals(OrderID));
            CaseLog  caseLog = new CaseLog(Session);

            caseLog.OrderInit(package);
            caseLog.SendCancelMail();
        }
Exemple #2
0
        private void Case_Test(int OrderID)
        {
            Packages package = db.Packages.AsNoTracking().First(p => p.IsEnable.Value && p.OrderID.Value.Equals(OrderID));
            var      serials = db.SerialNumberForRefundLabel.AsNoTracking().Where(s => !s.IsUsed && s.oldOrderID.Equals(OrderID)).ToList();

            using (CaseLog CaseLog = new CaseLog(package, Session))
            {
                // CaseLog.SendResendShipmentMail(, serials.First().Create_at);
            }
        }
Exemple #3
0
        private bool AddCaseLog(HddInfo model)
        {
            var caseLog = new CaseLog
            {
                HddInfoId = model.Id,
                Status    = model.Status,
                Created   = DateTime.Now,
                Modified  = DateTime.Now
            };

            return(_caseLogService.Add(caseLog));
        }
Exemple #4
0
        public ActionResult CreateCaseEvent(int packageID, byte caseType, int methodID)
        {
            AjaxResult result = new AjaxResult();

            try
            {
                Packages package = db.Packages.AsNoTracking().First(p => p.IsEnable.Value && p.ID.Equals(packageID));
                if (package == null)
                {
                    throw new Exception("找不到訂單!");
                }


                using (CaseLog CaseLog = new CaseLog(package, Session))
                {
                    switch (caseType)
                    {
                    case (byte)EnumData.CaseEventType.CancelShipment:
                        CaseLog.SendCancelMail();
                        break;

                    case (byte)EnumData.CaseEventType.UpdateShipment:
                        CaseLog.SendUpdateShipmentMail();
                        break;

                    case (byte)EnumData.CaseEventType.ChangeShippingMethod:
                        DirectLineLabel label = db.DirectLineLabel.Find(package.TagNo);
                        label.Status          = (byte)EnumData.LabelStatus.完成;
                        db.Entry(label).State = System.Data.Entity.EntityState.Modified;

                        CaseLog.SendChangeShippingMethodMail(methodID);
                        break;
                    }
                }
                db.Entry(package).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
            }
            catch (Exception e)
            {
                result.status  = false;
                result.message = e.InnerException != null && string.IsNullOrEmpty(e.InnerException.Message) ? e.InnerException.Message : e.Message;
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Exemple #5
0
 public CaseLogViewModel(CaseLog model)
 {
     Status  = model.Status.ToString();
     Created = model.Created;
 }
Exemple #6
0
 internal AppealCase()
 {
     ID = __instanceCounter;
     __instanceCounter++;
     Log = new CaseLog();
 }
Exemple #7
0
 public void WriteCase(CaseLog caseLog)
 {
     WriteCaseWasCalled++;
     _caseLog = caseLog;
 }
Exemple #8
0
        public void Receive()
        {
            try
            {
                using (LinkReceive receive = new LinkReceive(HttpContext.Request.Url.Query))
                {
                    CaseEvent eventData = db.CaseEvent.AsNoTracking().FirstOrDefault(c => c.ID.Equals(receive.CaseID));
                    if (eventData == null)
                    {
                        throw new Exception("找不到Case Event!");
                    }
                    if (!eventData.Status.Equals((byte)EnumData.CaseEventStatus.Open))
                    {
                        throw new Exception("執行動作無效!");
                    }

                    Packages package = db.Packages.AsNoTracking().FirstOrDefault(p => p.IsEnable.Value && p.ID.Equals(eventData.PackageID));
                    if (package == null)
                    {
                        throw new Exception("找不到訂單!");
                    }

                    using (CaseLog CaseLog = new CaseLog(package, Session))
                    {
                        Label = new GenericRepository <DirectLineLabel>(db);

                        TaskFactory factory = System.Web.HttpContext.Current.Application.Get("TaskFactory") as TaskFactory;

                        switch (receive.Type)
                        {
                        case (byte)EnumData.CaseEventType.CancelShipment:
                            if (!receive.Request.Equals((byte)EnumData.CaseEventRequest.Failed) && !receive.ReturnWarehouseID.HasValue)
                            {
                                throw new Exception("沒有選擇退貨倉!");
                            }

                            CaseLog.CancelShipmentResponse(receive.Request, receive.ReturnWarehouseID);

                            eventData = CaseLog.GetCaseEvent(EnumData.CaseEventType.CancelShipment);
                            if (eventData.Request.Equals((byte)EnumData.CaseEventRequest.Successful) && eventData.Status.Equals((byte)EnumData.CaseEventStatus.Locked))
                            {
                                ThreadTask threadTask = new ThreadTask(string.Format("Direct Line 訂單【{0}】同步資料", package.OrderID));
                                threadTask.AddWork(factory.StartNew(() =>
                                {
                                    threadTask.Start();
                                    SyncProcess sync = new SyncProcess(Session);
                                    return(sync.Sync_Order(package.OrderID.Value));
                                }));

                                DirectLineLabel label = db.DirectLineLabel.AsNoTracking().First(l => l.IsEnable && l.LabelID.Equals(eventData.LabelID));
                                label.Status = (byte)EnumData.LabelStatus.作廢;
                                Label.Update(label, label.LabelID);
                                Label.SaveChanges();
                            }
                            break;

                        case (byte)EnumData.CaseEventType.UpdateShipment:
                            CaseLog.UpdateShipmentResponse(receive.Request);
                            break;

                        case (byte)EnumData.CaseEventType.ChangeShippingMethod:
                            eventData = CaseLog.ChangeShippingMethodResponse(receive.Request);
                            if (eventData.Request.Equals((byte)EnumData.CaseEventRequest.Successful) && eventData.Status.Equals((byte)EnumData.CaseEventStatus.Close))
                            {
                                package = db.Packages.Find(eventData.PackageID);
                                if (!string.IsNullOrEmpty(package.TrackingNumber))
                                {
                                    ThreadTask threadTask = new ThreadTask(string.Format("Direct Line 訂單【{0}】SC更新", package.OrderID));
                                    threadTask.AddWork(factory.StartNew(() =>
                                    {
                                        threadTask.Start();
                                        SyncProcess sync = new SyncProcess(Session);
                                        return(sync.Update_Tracking(package));
                                    }));
                                }
                            }
                            break;

                        case (byte)EnumData.CaseEventType.ResendShipment:
                            eventData = CaseLog.ResendShipmentResponse(receive.Request);
                            if (eventData.Request.Equals((byte)EnumData.CaseEventRequest.Successful) && eventData.Status.Equals((byte)EnumData.CaseEventStatus.Close))
                            {
                                DirectLineLabel label = db.DirectLineLabel.AsNoTracking().First(l => l.IsEnable && l.LabelID.Equals(eventData.NewLabelID));
                                package = db.Packages.AsNoTracking().First(p => p.ID.Equals(label.PackageID));
                                if (!string.IsNullOrEmpty(package.TrackingNumber))
                                {
                                    label.Status = (byte)EnumData.LabelStatus.完成;

                                    ThreadTask threadTask = new ThreadTask(string.Format("Direct Line 訂單【{0}】SC更新", package.OrderID));
                                    threadTask.AddWork(factory.StartNew(() =>
                                    {
                                        threadTask.Start();
                                        SyncProcess sync = new SyncProcess(Session);
                                        return(sync.Update_Tracking(package));
                                    }));
                                }

                                Label.Update(label, label.LabelID);
                                Label.SaveChanges();
                            }
                            break;

                        case (byte)EnumData.CaseEventType.ReturnPackage:
                            CaseLog.ReturnPackageResponse(receive.Request);
                            break;
                        }
                    }
                }

                Response.Write("Success!");
            }
            catch (Exception e)
            {
                Response.Write(e.InnerException != null && !string.IsNullOrEmpty(e.InnerException.Message) ? e.InnerException.Message : e.Message);
            }
        }
Exemple #9
0
 internal CompletedCaseReport(AppealCase ac, CaseBoard cb, CaseLog log)
 {
     AppealCase = ac;
     CaseBoard  = cb;
     Log        = log;
 }
Exemple #10
0
 internal FinishedCaseLog(CaseLog log)
 {
     _log = log;
 }