Ejemplo n.º 1
0
        private async void GetData()
        {
            var paymentList = await connection.Table <PaymentInfo>().ToListAsync();

            var pendingList        = new List <PendingList>();
            var totalPendingAmount = 0;

            foreach (var payment in paymentList)
            {
                var customer = await connection.Table <Customer>().Where(c => c.Id == payment.CustomerId).FirstOrDefaultAsync();

                var amount = payment.TotalAmount - payment.Settled;
                totalPendingAmount += amount;
                var pending = new PendingList
                {
                    Customer = customer,
                    Amount   = amount,
                    Command  = CallCommand
                };
                pendingList.Add(pending);
            }

            TotalPendingAmount.Text     = "Total Pending Amount Rs." + totalPendingAmount;
            PendingListView.ItemsSource = pendingList;
        }
Ejemplo n.º 2
0
        public PendingPersonModel NewPerson(int familyid)
        {
            var campuslist = DbUtil.Db.Setting("CampusRequired") ? "CampusNoNoCampus" : "Campus";

            var p = new PendingPersonModel
            {
                FamilyId      = familyid,
                index         = PendingList.Count,
                Gender        = new CodeInfo(99, "Gender"),
                MaritalStatus = new CodeInfo(99, "MaritalStatus"),
                Campus        = new CodeInfo(CampusId, campuslist),
                EntryPoint    = new CodeInfo(EntryPointId, "EntryPoint"),
                context       = AddContext
            };

            if (familyid == 0)
            {
                p.FamilyId    = NextNewFamilyId();
                p.IsNewFamily = true;
            }
#if DEBUG
            p.FirstName = "David";
            p.LastName  = "Carr." + DateTime.Now.Millisecond;
#endif
            PendingList.Add(p);
            return(p);
        }
Ejemplo n.º 3
0
 public void Add(PendingMessage pending)
 {
     if (PendingList.ContainsKey(pending.MessageId))
     {
         return;
     }
     PendingList.TryAdd(pending.MessageId, pending);
 }
Ejemplo n.º 4
0
        internal void AddExisting(int id)
        {
            var p  = DbUtil.Db.LoadPersonById(id);
            var pp = new PendingPersonModel();

            pp.CopyPropertiesFrom(p);
            pp.LoadAddress();
            PendingList.Add(pp);
        }
Ejemplo n.º 5
0
        internal void AddExisting(int id)
        {
            var p  = CurrentDatabase.LoadPersonById(id);
            var pp = new PendingPersonModel(CurrentDatabase);

            pp.CopyPropertiesFrom(p);
            pp.LoadAddress();
            PendingList.Add(pp);
        }
Ejemplo n.º 6
0
 private void bindControlData()
 {
     ScanPackageButton.DataBind();
     StartAuditButton.DataBind();
     CancelButton.DataBind();
     CommitAuditButton.DataBind();
     PendingListPanel.DataBind();
     PendingList.DataBind();
     LostListPanel.DataBind();
     LostList.DataBind();
 }
Ejemplo n.º 7
0
        public void CheckMessages()
        {
            GlobalConfiguration.Configuration.Logger.Info("Check pending started");

            while (!m_Terminated)
            {
                var waitHandles = new WaitHandle[] { m_Terminate };
                int result      = ManualResetEvent.WaitAny(waitHandles, 60 * 1000, false);
                if (result == 0)
                {
                    m_Terminated = true;
                    break;
                }

                if (PendingList.Count == 0)
                {
                    continue;
                }

                GlobalConfiguration.Configuration.Logger.Info($"Check sent for {PendingList.Count} emails");

                var messageToRemoveList = new List <string>();
                foreach (var item in PendingList.Keys)
                {
                    try
                    {
                        System.Threading.Thread.Sleep(5 * 500);
                        var messageId = CheckPendingMessage(item);
                        if (messageId != null)
                        {
                            messageToRemoveList.Add(messageId);
                        }
                    }
                    catch (Exception ex)
                    {
                        GlobalConfiguration.Configuration.Logger.Error(ex);
                    }
                }

                foreach (var item in messageToRemoveList)
                {
                    PendingMessage pm = null;
                    PendingList.TryRemove(item, out pm);
                }
            }
        }
Ejemplo n.º 8
0
        public PendingPersonModel NewPerson(int familyid)
        {
            var campuslist = CurrentDatabase.Setting("CampusRequired") ? "CampusNoNoCampus" : "Campus";

            var p = new PendingPersonModel(CurrentDatabase)
            {
                FamilyId      = familyid,
                index         = PendingList.Count,
                Gender        = new CodeInfo(99, "Gender"),
                MaritalStatus = new CodeInfo(99, "MaritalStatus"),
                Campus        = new CodeInfo(CampusId, campuslist),
                EntryPoint    = new CodeInfo(EntryPointId, "EntryPoint"),
                context       = AddContext
            };

            if (familyid == 0)
            {
                p.FamilyId    = NextNewFamilyId();
                p.IsNewFamily = true;
            }
            PendingList.Add(p);
            return(p);
        }
Ejemplo n.º 9
0
            /// <summary>
            /// 检查商品价格变动单据审核单据
            /// </summary>
            /// <param name="productPriceRequest"></param>
            /// <param name="status"></param>
            /// <param name="productID"></param>
            /// <returns></returns>
            public static void CheckProductPriceRequestStatus(ProductPriceRequestInfo productPriceRequest, ProductPriceRequestStatus?status, ref string productID, ref int proSysNo)
            {
                CheckProductPriceReques(productPriceRequest);
                if (productPriceRequest.AuditType == null)
                {
                    throw new BizException(ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductPriceRequestTypeIsNull"));
                }
                var productPriceRequestDA = ObjectFactory <IProductPriceRequestDA> .Instance;

                if (productPriceRequest.SysNo == null)
                {
                    return;
                }
                var productSysNo = productPriceRequestDA.GetProductSysNoBySysNo(productPriceRequest.SysNo.Value);

                proSysNo = productSysNo;
                if (productSysNo <= 0)
                {
                    throw new BizException(ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductSysNoIsNull"));
                }
                var productDA = ObjectFactory <IProductDA> .Instance;
                var product   = productDA.GetProductInfoBySysNo(productSysNo);

                productID = product.ProductID;
                if (product == null || String.IsNullOrEmpty(product.ProductID))
                {
                    throw new BizException(ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductIsNull"));
                }
                if (productPriceRequest.RequestStatus == null)
                {
                    throw new BizException(ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductPriceRequestStatusIsNull"));
                }
                if (!PendingList.Contains(productPriceRequest.RequestStatus.Value))
                {
                    var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest",
                                                                   "AuditProductPriceRequestForPending");
                    throw new BizException(String.Format(errorStr, product.ProductID));
                }
                if (status != null && productPriceRequest.AuditType.Value == ProductPriceRequestAuditType.SeniorAudit &&
                    productPriceRequest.RequestStatus.Value == ProductPriceRequestStatus.NeedSeniorApprove &&
                    status.Value == ProductPriceRequestStatus.Origin)
                {
                    var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest",
                                                                   "AuditProductPriceRequestForPending");
                    throw new BizException(String.Format(errorStr, product.ProductID));
                }
                if (status != null && productPriceRequest.AuditType.Value == ProductPriceRequestAuditType.Audit &&
                    status.Value == ProductPriceRequestStatus.NeedSeniorApprove)
                {
                    var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest",
                                                                   "TLAuditProductPriceRequest");
                    throw new BizException(String.Format(errorStr, product.ProductID));
                }
                if (productPriceRequest.AuditType.Value == ProductPriceRequestAuditType.SeniorAudit)
                {
                    if (String.IsNullOrEmpty(productPriceRequest.TLMemo.Trim()) &&
                        productPriceRequest.RequestStatus.Value == ProductPriceRequestStatus.Origin)
                    {
                        var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest",
                                                                       "TLMemoInvalid");
                        throw new BizException(String.Format(errorStr, product.ProductID));
                    }
                    if (String.IsNullOrEmpty(productPriceRequest.PMDMemo.Trim()) &&
                        productPriceRequest.RequestStatus.Value == ProductPriceRequestStatus.NeedSeniorApprove)
                    {
                        var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest",
                                                                       "PMDMemoInvalid");
                        throw new BizException(String.Format(errorStr, product.ProductID));
                    }
                }
                var result = ExternalDomainBroker.CheckMarketIsActivity(productSysNo);

                if (result && status == ProductPriceRequestStatus.Approved)
                {
                    var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest",
                                                                   "ProductPriceRequestStatusInvalid");
                    throw new BizException(String.Format(errorStr, product.ProductID));
                }
                ExternalDomainBroker.CheckComboPriceAndSetStatus(productSysNo);
            }
Ejemplo n.º 10
0
        public string CheckPendingMessage(string messageId)
        {
            PendingMessage pending = null;

            PendingList.TryGetValue(messageId, out pending);
            if (pending == null)
            {
                return(null);
            }

            if (pending.CheckCount > 10)
            {
                return(pending.MessageId);
            }

            // Every 20 minutes or first time
            if (!pending.LastCheckDate.HasValue ||
                pending.LastCheckDate.Value.AddMinutes(20) < DateTime.Now)
            {
                var client = new SendInBlueClient(ApiKey);
                pending.CheckCount++;
                pending.LastCheckDate = DateTime.Now;
                Models.EmailEventReport result = null;
                try
                {
                    result = client.GetMessageHistory(pending.SendInBlueMessageId);
                }
                catch (Exception ex)
                {
                    GlobalConfiguration.Configuration.Logger.Error($"Get history fail with email {pending.Email}/{pending.Subject}");
                    GlobalConfiguration.Configuration.Logger.Error(ex);
                    SentFail(pending, "sendinblue:historyFail", "Status code error");
                }

                if (result == null)
                {
                    return(null);
                }

                if (result.Events == null || result.Events.Count == 0)
                {
                    return(null);
                }

                var item = result.Events.Last();

                if (item.Event == EmailEventReportEvent.EventEnum.Clicks ||
                    item.Event == EmailEventReportEvent.EventEnum.Opened ||
                    item.Event == EmailEventReportEvent.EventEnum.Delivered)
                {
                    GlobalConfiguration.Configuration.Logger.Debug($"email {pending.Email}/{pending.Subject} was sent with status {item.Event}");
                    return(pending.MessageId);
                }
                else if (item.Event == EmailEventReportEvent.EventEnum.Bounces ||
                         item.Event == EmailEventReportEvent.EventEnum.HardBounces ||
                         item.Event == EmailEventReportEvent.EventEnum.SoftBounces)
                {
                    GlobalConfiguration.Configuration.Logger.Warn($"email {pending.Email}/{pending.Subject} was bounces");
                    SentFail(pending, "sendinblue:bounce", item.Reason);
                    return(pending.MessageId);
                }
                else if (item.Event == EmailEventReportEvent.EventEnum.Blocked)
                {
                    GlobalConfiguration.Configuration.Logger.Warn($"email {pending.Email}/{pending.Subject} was blocked");
                    SentFail(pending, "sendinblue:blocked");
                }
                else if (item.Event == EmailEventReportEvent.EventEnum.Requests)
                {
                    return(null);
                }
                else if (item.Event == EmailEventReportEvent.EventEnum.Spam)
                {
                    GlobalConfiguration.Configuration.Logger.Warn($"email {pending.Email}/{pending.Subject} marked as spam");
                    SentFail(pending, "sendinblue:spam");
                    return(pending.MessageId);
                }
                else if (item.Event == EmailEventReportEvent.EventEnum.Unsubscribed)
                {
                    GlobalConfiguration.Configuration.Logger.Warn($"email {pending.Email}/{pending.Subject} need unsubscribe");
                    SentFail(pending, "sendinblue:unsubscribe");
                    return(pending.MessageId);
                }
                else if (item.Event == EmailEventReportEvent.EventEnum.Invalid)
                {
                    GlobalConfiguration.Configuration.Logger.Warn($"email {pending.Email}/{pending.Subject} was invalid");
                    SentFail(pending, "sendinblue:invalid");
                    return(pending.MessageId);
                }
            }

            return(null);
        }
Ejemplo n.º 11
0
        public string CheckPendingMessage(string messageId)
        {
            PendingMessage pending = null;

            PendingList.TryGetValue(messageId, out pending);
            if (pending == null)
            {
                return(null);
            }

            if (pending.CheckCount > 10)
            {
                return(pending.MessageId);
            }

            // Every 20 minutes or first time
            if (!pending.LastCheckDate.HasValue ||
                pending.LastCheckDate.Value.AddMinutes(20) < DateTime.Now)
            {
                var client = new MailJetClient(PublicKey, PrivateKey);
                pending.CheckCount++;
                pending.LastCheckDate = DateTime.Now;
                Models.MessageHistory result = null;
                try
                {
                    result = client.GetMessageHistory(pending.MailJetMessageId);
                }
                catch (Exception ex)
                {
                    GlobalConfiguration.Configuration.Logger.Error($"Get history fail with email {pending.Email}/{pending.Subject}");
                    GlobalConfiguration.Configuration.Logger.Error(ex);
                    SentFail(pending, "mailjet:historyFail", "Status code error");
                }

                if (result == null)
                {
                    return(null);
                }

                if (result.Count == 0)
                {
                    return(null);
                }

                var item = result.Data.Last();

                if (item.EventType == Models.MessageStatus.Clicked ||
                    item.EventType == Models.MessageStatus.Opened ||
                    item.EventType == Models.MessageStatus.Sent)
                {
                    GlobalConfiguration.Configuration.Logger.Debug($"email {pending.Email}/{pending.Subject} was sent with status {item.EventType}");
                    return(pending.MessageId);
                }
                else if (item.EventType == Models.MessageStatus.Bounced)
                {
                    GlobalConfiguration.Configuration.Logger.Warn($"email {pending.Email}/{pending.Subject} was bounces");
                    SentFail(pending, "mailjet:bounce", item.Comment);
                    return(pending.MessageId);
                }
                else if (item.EventType == Models.MessageStatus.Blocked)
                {
                    GlobalConfiguration.Configuration.Logger.Warn($"email {pending.Email}/{pending.Subject} was blocked");
                    SentFail(pending, "mailjet:blocked");
                }
                else if (item.EventType == Models.MessageStatus.Queued)
                {
                    return(null);
                }
                else if (item.EventType == Models.MessageStatus.Spam)
                {
                    GlobalConfiguration.Configuration.Logger.Warn($"email {pending.Email}/{pending.Subject} marked as spam");
                    SentFail(pending, "mailjet:spam");
                    return(pending.MessageId);
                }
                else if (item.EventType == Models.MessageStatus.Unsub)
                {
                    GlobalConfiguration.Configuration.Logger.Warn($"email {pending.Email}/{pending.Subject} need unsubscribe");
                    SentFail(pending, "mailjet:unsubscribe");
                    return(pending.MessageId);
                }
            }

            return(null);
        }