Exemplo n.º 1
0
 public void addComplexPolicy(ComplexPurchasePolicy p, int storeID)
 {
     try
     {
         lock (connection)
         {
             connection.Open();
             int    policyID             = p.getPolicyID();
             int    isPartOfComplex      = 0;
             string type                 = "complex";
             int    subtype1             = p.getFirstChildID();
             int    subtype2             = p.getSecondChildID();
             string compType             = p.getCompType();
             int    isPartOfComplexChild = 1;
             string sql = "INSERT INTO [dbo].[PurchasePolicy] (storeID, policyID,type,isPartOfComplex, subtypeID1, subtypeID2, compType )" +
                          " VALUES (@storeID,@policyID,@type,@isPartOfComplex,@subtype1,@subtype2,@compType )";
             connection.Execute(sql, new { storeID, policyID, type, isPartOfComplex, subtype1, subtype2, compType });
             string sql1 = "UPDATE [dbo].[PurchasePolicy] SET isPartOfComplex = @isPartOfComplexChild WHERE storeID =@storeID AND policyID=@subtype1";
             connection.Execute(sql1, new { storeID, subtype1, isPartOfComplexChild });
             string sql2 = "UPDATE [dbo].[PurchasePolicy] SET isPartOfComplex= @isPartOfComplexChild WHERE storeID =@storeID AND policyID=@subtype2";
             connection.Execute(sql2, new { storeID, subtype2, isPartOfComplexChild });
             connection.Close();
         }
     }
     catch (Exception)
     {
         connection.Close();
         throw new StoreException("cant add min policy");
     }
 }
Exemplo n.º 2
0
 public bool hasTotalPricePolicy()
 {
     foreach (PurchasePolicy p in policies)
     {
         if (p is TotalPricePolicy)
         {
             return(true);
         }
         if (p is ComplexPurchasePolicy)
         {
             if ((((ComplexPurchasePolicy)p).getFirstPolicyChild() is TotalPricePolicy) || ((ComplexPurchasePolicy)p).getSecondPolicyChild() is TotalPricePolicy)
             {
                 return(true);
             }
             if (((ComplexPurchasePolicy)p).getFirstPolicyChild() is ComplexPurchasePolicy)
             {
                 ComplexPurchasePolicy c = (ComplexPurchasePolicy)(((ComplexPurchasePolicy)p).getFirstPolicyChild());
                 if (c.getFirstPolicyChild() is TotalPricePolicy || c.getSecondPolicyChild() is TotalPricePolicy)
                 {
                     return(true);
                 }
             }
             else if (((ComplexPurchasePolicy)p).getSecondPolicyChild() is ComplexPurchasePolicy)
             {
                 ComplexPurchasePolicy c = (ComplexPurchasePolicy)(((ComplexPurchasePolicy)p).getSecondPolicyChild());
                 if (c.getFirstPolicyChild() is TotalPricePolicy || c.getSecondPolicyChild() is TotalPricePolicy)
                 {
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
Exemplo n.º 3
0
        public void addComplexPurchasePolicy(int index1, int index2, string type)
        {
            PurchasePolicy p1 = policies.ElementAt(index1);
            PurchasePolicy p2 = policies.ElementAt(index2);

            ComplexPurchasePolicy complexPurchase = new ComplexPurchasePolicy(type, p1, p2);

            policies.Remove(p1);
            policies.Remove(p2);
            policies.AddLast(complexPurchase);
            DBStore.getInstance().addComplexPolicy(complexPurchase, storeId);
        }
Exemplo n.º 4
0
        private LinkedList <PurchasePolicy> parseTwoComplex(IEnumerable <PolicyEntry> policyEntries)
        {
            LinkedList <PurchasePolicy> policyList = new LinkedList <PurchasePolicy>();
            ComplexPurchasePolicy       compParent = null;
            ComplexPurchasePolicy       compChild  = null;
            int compParentPos  = -1;
            int compChildPos   = -1;
            int idRegularChild = -1;
            int id1Child       = -1;
            int id2Child       = -1;

            for (int i = 0; i < policyEntries.Count(); i++)
            {
                if (policyEntries.ElementAt(i).getType() == "complex" && policyEntries.ElementAt(i).getIsPartOfComp())
                {
                    compChildPos = i;
                    id1Child     = policyEntries.ElementAt(i).getSubID1();
                    id2Child     = policyEntries.ElementAt(i).getSubID2();
                }
                else if (policyEntries.ElementAt(i).getType() == "complex" && !policyEntries.ElementAt(i).getIsPartOfComp())
                {
                    compParentPos = i;
                }
            }
            PurchasePolicy child1 = null;
            PurchasePolicy child2 = null;

            for (int i = 0; i < policyEntries.Count(); i++)
            {
                PolicyEntry p = policyEntries.ElementAt(i);
                if (p.getPolicyID() == id1Child)
                {
                    child1 = parseRegular(p);
                }
                else if (p.getPolicyID() == id2Child)
                {
                    child2 = parseRegular(p);
                }
                else if (p.getPolicyID() != id1Child & p.getPolicyID() != id2Child && p.getPolicyID() != compChildPos)
                {
                    idRegularChild = i;
                }
            }

            compChild = new ComplexPurchasePolicy(policyEntries.ElementAt(compChildPos).getCompType(), child1, child2, policyEntries.ElementAt(compChildPos).getPolicyID());
            PurchasePolicy regularChild = parseRegular(policyEntries.ElementAt(idRegularChild));

            compParent = new ComplexPurchasePolicy(policyEntries.ElementAt(compParentPos).getCompType(), compChild, regularChild, policyEntries.ElementAt(compParentPos).getPolicyID());

            policyList.AddLast(compParent);
            return(policyList);
        }
Exemplo n.º 5
0
        private MinAmountPurchase getMinPolicy()
        {
            foreach (PurchasePolicy p in policies)
            {
                if (p is MinAmountPurchase)
                {
                    return((MinAmountPurchase)p);
                }

                if (p is ComplexPurchasePolicy)
                {
                    if ((((ComplexPurchasePolicy)p).getFirstPolicyChild() is MinAmountPurchase))
                    {
                        return((MinAmountPurchase)((ComplexPurchasePolicy)p).getFirstPolicyChild());
                    }
                    if (((ComplexPurchasePolicy)p).getSecondPolicyChild() is MinAmountPurchase)
                    {
                        return((MinAmountPurchase)((ComplexPurchasePolicy)p).getSecondPolicyChild());
                    }

                    if (((ComplexPurchasePolicy)p).getFirstPolicyChild() is ComplexPurchasePolicy)
                    {
                        ComplexPurchasePolicy c = (ComplexPurchasePolicy)(((ComplexPurchasePolicy)p).getFirstPolicyChild());
                        if (c.getFirstPolicyChild() is MinAmountPurchase)
                        {
                            return((MinAmountPurchase)(c.getFirstPolicyChild()));
                        }

                        else if (c.getSecondPolicyChild() is MinAmountPurchase)
                        {
                            return((MinAmountPurchase)c.getSecondPolicyChild());
                        }
                    }
                    else if (((ComplexPurchasePolicy)p).getSecondPolicyChild() is ComplexPurchasePolicy)
                    {
                        ComplexPurchasePolicy c = (ComplexPurchasePolicy)(((ComplexPurchasePolicy)p).getFirstPolicyChild());
                        if (c.getFirstPolicyChild() is MinAmountPurchase)
                        {
                            return((MinAmountPurchase)(c.getFirstPolicyChild()));
                        }

                        else if (c.getSecondPolicyChild() is MinAmountPurchase)
                        {
                            return((MinAmountPurchase)c.getSecondPolicyChild());
                        }
                    }
                }
            }
            return(null);
        }
Exemplo n.º 6
0
        private LinkedList <PurchasePolicy> parseOneComplex(IEnumerable <PolicyEntry> policyEntries)
        {
            LinkedList <PurchasePolicy> policyList = new LinkedList <PurchasePolicy>();
            ComplexPurchasePolicy       comp       = null;
            int compPos = -1;
            int id1     = -1;
            int id2     = -1;

            for (int i = 0; i < policyEntries.Count(); i++)
            {
                if (policyEntries.ElementAt(i).getType() == "complex")
                {
                    compPos = i;
                    id1     = policyEntries.ElementAt(i).getSubID1();
                    id2     = policyEntries.ElementAt(i).getSubID2();
                }
            }
            PurchasePolicy child1 = null;
            PurchasePolicy child2 = null;

            for (int i = 0; i < policyEntries.Count(); i++)
            {
                if (policyEntries.ElementAt(i).getPolicyID() == id1)
                {
                    child1 = parseRegular(policyEntries.ElementAt(i));
                }
                else if (policyEntries.ElementAt(i).getPolicyID() == id2)
                {
                    child2 = parseRegular(policyEntries.ElementAt(i));
                }
                else
                {
                    policyList.AddLast(parseRegular(policyEntries.ElementAt(i)));
                }
            }
            comp = new ComplexPurchasePolicy(policyEntries.ElementAt(compPos).getCompType(), child1, child2);
            policyList.AddLast(comp);
            return(policyList);
        }