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