public RevealedDiscount(int id, double discountPrecentage, Dictionary <int, KeyValuePair <ProductInStore, int> > products, DateTime endDateDiscount, DuplicatePolicy logic) { Id = id; this.discountPrecentage = discountPrecentage; this.products = products ?? throw new ArgumentNullException(nameof(products)); this.EndDateDiscount = endDateDiscount; this.logic = logic; }
public void setUp() { store = new Store(1111, "adidas"); admin = new User(0, "admin", "1234", true, true); basket_admin = admin.Basket; ownerUser = new User(1234, "Seifan", "2457", false, false); ownerUser.register(ownerUser.UserName, ownerUser.Password); ownerUser.signIn(ownerUser.UserName, ownerUser.Password); ownerRole = new Owner(store, ownerUser); ownerUser.Roles.Add(store.Id, ownerRole); p1 = new Product(0, "first", "", "", 100); p2 = new Product(1, "second", "", "", 50); p3 = new Product(2, "third", "", "", 200); p4 = new Product(3, "fourth", "", "", 300); pis1 = new ProductInStore(20, store, p1); pis2 = new ProductInStore(20, store, p2); pis3 = new ProductInStore(20, store, p3); pis4 = new ProductInStore(20, store, p4); store.Products.Add(p1.Id, pis1); store.Products.Add(p2.Id, pis2); store.Products.Add(p3.Id, pis3); store.Products.Add(p4.Id, pis4); products = new List <string>(); products.Add("first"); products.Add("second"); products.Add("third"); products.Add("fourth"); system = new TradingSystem(null, null); system.Stores.Add(store.Id, store); system.Users.Add(admin.Id, admin); system.Users.Add(ownerUser.Id, ownerUser); logic = LogicalConnections.and; duplicate = DuplicatePolicy.WithMultiplication; date1 = new DateTime(2019, 10, 1); lc = new LogicalCondition(0, 0.5, null, new DateTime(2222, 1, 1), DuplicatePolicy.WithMultiplication, LogicalConnections.and); }
public void setUp() { store = new Store(1111, "adidas"); logic = DuplicatePolicy.WithMultiplication; admin = new User(0, "admin", "1234", true, true); basket_admin = admin.Basket; user = new User(3434, "luli", "1111", false, true); ownerUser = new User(1234, "Seifan", "2457", false, false); ownerUser.register(ownerUser.UserName, ownerUser.Password); ownerUser.signIn(ownerUser.UserName, ownerUser.Password); ownerRole = new Owner(store, ownerUser); ownerUser.Roles.Add(store.Id, ownerRole); p1 = new Product(0, "first", "", "", 100); p2 = new Product(1, "second", "", "", 50); p3 = new Product(2, "third", "", "", 200); p4 = new Product(3, "fourth", "", "", 300); pis1 = new ProductInStore(20, store, p1); pis2 = new ProductInStore(20, store, p2); pis3 = new ProductInStore(20, store, p3); pis4 = new ProductInStore(20, store, p4); store.Products.Add(p1.Id, pis1); store.Products.Add(p2.Id, pis2); store.Products.Add(p3.Id, pis3); store.Products.Add(p4.Id, pis4); products = new List <KeyValuePair <String, int> >(); products.Add(new KeyValuePair <String, int>("first", 2)); products.Add(new KeyValuePair <String, int>("second", 10)); products.Add(new KeyValuePair <String, int>("third", 5)); products.Add(new KeyValuePair <String, int>("fourth", 4)); system = new TradingSystem(null, null); system.Stores.Add(store.Id, store); system.Users.Add(admin.Id, admin); system.Users.Add(ownerUser.Id, ownerUser); system.Users.Add(user.Id, user); discountId = system.addRevealedDiscountPolicy(products, 20, ownerUser.Id, store.Id, 60, 0); }
public virtual int addConditionalDiscuntPolicy(List <String> products, String condition, double discountPrecentage, DateTime expiredDate, int discountId, DuplicatePolicy duplicate, LogicalConnections logic) { return(store.addConditionalDiscuntPolicy(discountId, products, condition, discountPrecentage, expiredDate, duplicate, logic)); }
public virtual int addRevealedDiscountPolicy(List <KeyValuePair <String, int> > products, double discountPrecentage, DateTime expiredDate, int discountId, DuplicatePolicy logic) { return(store.addRevealedDiscountPolicy(products, discountPrecentage, expiredDate, discountId, logic)); }
private ProcessDuplicateResult ProcessDuplicate(DicomFile dupFile, WorkQueueUid uid, StudyXml studyXml) { var result = new ProcessDuplicateResult(); string duplicateSopPath = ServerPlatform.GetDuplicateUidPath(StorageLocation, uid); string basePath = StorageLocation.GetSopInstancePath(uid.SeriesInstanceUid, uid.SopInstanceUid); if (!File.Exists(basePath)) { // NOTE: This is special case. The file which caused dicom service to think this sop is a duplicate // no longer exists in the study folder. Perhaps it has been moved to another folder during auto reconciliation. // We have nothing to compare against so let's just throw it into the SIQ queue. CreateDuplicateSIQEntry(uid, dupFile, null); result.ActionTaken = DuplicateProcessResultAction.Reconcile; } else { // Check if system is configured to override the rule for this study if (DuplicatePolicy.IsParitionDuplicatePolicyOverridden(this.StorageLocation)) { return(OverwriteDuplicate(dupFile, uid, studyXml)); } else { var baseFile = new DicomFile(basePath); baseFile.Load(); if (DuplicateSopProcessorHelper.SopClassIsReport(dupFile.SopClass.Uid) && ServerPartition.AcceptLatestReport) { return(ProcessDuplicateReport(dupFile, baseFile, uid, studyXml)); } if (!dupFile.TransferSyntax.Equals(baseFile.TransferSyntax)) { // If they're compressed, and we have a codec, lets decompress and still do the comparison if (dupFile.TransferSyntax.Encapsulated && !dupFile.TransferSyntax.LossyCompressed && DicomCodecRegistry.GetCodec(dupFile.TransferSyntax) != null) { dupFile.ChangeTransferSyntax(TransferSyntax.ExplicitVrLittleEndian); } if (baseFile.TransferSyntax.Encapsulated && !baseFile.TransferSyntax.LossyCompressed && DicomCodecRegistry.GetCodec(baseFile.TransferSyntax) != null) { baseFile.ChangeTransferSyntax(TransferSyntax.ExplicitVrLittleEndian); } if (dupFile.TransferSyntax.Encapsulated || baseFile.TransferSyntax.Encapsulated) { string failure = String.Format("Base file transfer syntax is '{0}' while duplicate file has '{1}'", baseFile.TransferSyntax, dupFile.TransferSyntax); var list = new List <DicomAttributeComparisonResult>(); var compareResult = new DicomAttributeComparisonResult { ResultType = ComparisonResultType.DifferentValues, TagName = DicomTagDictionary.GetDicomTag(DicomTags.TransferSyntaxUid).Name, Details = failure }; list.Add(compareResult); CreateDuplicateSIQEntry(uid, dupFile, list); result.ActionTaken = DuplicateProcessResultAction.Reconcile; return(result); } } var failureReason = new List <DicomAttributeComparisonResult>(); if (baseFile.DataSet.Equals(dupFile.DataSet, ref failureReason)) { Platform.Log(LogLevel.Info, "Duplicate SOP being processed is identical. Removing SOP: {0}", baseFile.MediaStorageSopInstanceUid); RemoveWorkQueueUid(uid, duplicateSopPath); result.ActionTaken = DuplicateProcessResultAction.Delete; } else { CreateDuplicateSIQEntry(uid, dupFile, failureReason); result.ActionTaken = DuplicateProcessResultAction.Reconcile; } } } return(result); }
public override int addConditionalDiscuntPolicy(List <String> products, String condition, double discountPrecentage, int expiredDiscountDate, DuplicatePolicy duplicate, LogicalConnections logic, int discountId, int storeId) { return(1); }
public override int addConditionalDiscuntPolicy(int discountId, List <String> productsList, String condition, double discountPrecentage, DateTime expiredDiscountDate, DuplicatePolicy dup, LogicalConnections logic) { return(1); }
/// <summary> /// Inserts the duplicate DICOM file into the <see cref="WorkQueue"/> for processing (if applicable). /// </summary> /// <param name="context">The processing context.</param> /// <param name="file">The duplicate DICOM file being processed.</param> /// <param name="data">Extra data to insert for the WorkQueue item.</param> /// <param name="sourceFilename">Optional source filename already saved to disk to import.</param> /// <returns>A <see cref="DicomProcessingResult"/> that contains the result of the processing.</returns> /// <remarks> /// This method inserts a <see cref="CommandBase"/> into <paramref name="context.CommandProcessor"/>. /// The outcome of the operation depends on the <see cref="DuplicateSopPolicyEnum"/> of the <see cref="ServerPartition"/>. /// If it is set to <see cref="DuplicateSopPolicyEnum.CompareDuplicates"/>, the duplicate file will be /// inserted into the <see cref="WorkQueue"/> for processing. /// </remarks> public static DicomProcessingResult Process(SopInstanceProcessorContext context, DicomMessageBase file, StudyProcessWorkQueueData data, string sourceFilename = null) { Platform.CheckForNullReference(file, "file"); Platform.CheckForNullReference(context, "context"); Platform.CheckMemberIsSet(context.Group, "parameters.Group"); Platform.CheckMemberIsSet(context.CommandProcessor, "parameters.CommandProcessor"); Platform.CheckMemberIsSet(context.StudyLocation, "parameters.StudyLocation"); if (string.IsNullOrEmpty(sourceFilename)) { Platform.CheckForNullReference(file as DicomFile, "file"); } var result = new DicomProcessingResult { DicomStatus = DicomStatuses.Success, Successful = true, StudyInstanceUid = file.DataSet[DicomTags.StudyInstanceUid].GetString(0, string.Empty), SeriesInstanceUid = file.DataSet[DicomTags.SeriesInstanceUid].GetString(0, string.Empty), SopInstanceUid = file.DataSet[DicomTags.SopInstanceUid].GetString(0, string.Empty), SopClassUid = file.DataSet[DicomTags.SopClassUid].GetString(0, string.Empty), AccessionNumber = file.DataSet[DicomTags.AccessionNumber].GetString(0, string.Empty) }; string failureMessage; if (context.DuplicateProcessing.HasValue && context.DuplicateProcessing.Value.Equals(DuplicateProcessingEnum.Reject)) { failureMessage = String.Format("Duplicate SOP Instance received, rejecting {0}", result.SopInstanceUid); Platform.Log(LogLevel.Info, failureMessage); result.SetError(DicomStatuses.DuplicateSOPInstance, failureMessage); return(result); } if (SopClassIsReport(result.SopClassUid) && context.StudyLocation.ServerPartition.AcceptLatestReport) { Platform.Log(LogLevel.Info, "Duplicate Report received, overwriting {0}", result.SopInstanceUid); if (string.IsNullOrEmpty(sourceFilename)) { ProcessStoredDuplicate(context, file as DicomFile, data, DuplicateProcessingEnum.OverwriteReport); } else { ProcessStoredDuplicateFile(context, sourceFilename, file, data, DuplicateProcessingEnum.OverwriteReport); } return(result); } if (DuplicatePolicy.IsParitionDuplicatePolicyOverridden(context.StudyLocation)) { // Note: this is a special case where we need to temporarily override the duplicate policy for a particular study // so that SIQ entry can be processed (#10569). This should only happen once in a blue moon. Platform.Log(LogLevel.Warn, "Duplicate instance received for study {0} on Partition {1}. Duplicate policy overridden in app config. Will overwrite {2}", result.StudyInstanceUid, context.StudyLocation.ServerPartition.AeTitle, result.SopInstanceUid); if (string.IsNullOrEmpty(sourceFilename)) { ProcessStoredDuplicate(context, file as DicomFile, data, DuplicateProcessingEnum.OverwriteSop); } else { ProcessStoredDuplicateFile(context, sourceFilename, file, data, DuplicateProcessingEnum.OverwriteSop); } return(result); } if (context.DuplicateProcessing.HasValue) { Platform.Log(LogLevel.Info, context.DuplicateProcessing.Value.Equals(DuplicateProcessingEnum.Compare) ? "Duplicate SOP Instance received, comparing {0}" : "Duplicate SOP Instance received, overwriting {0}", result.SopInstanceUid); if (string.IsNullOrEmpty(sourceFilename)) { ProcessStoredDuplicate(context, file as DicomFile, data, context.DuplicateProcessing.Value); } else { ProcessStoredDuplicateFile(context, sourceFilename, file, data, context.DuplicateProcessing.Value); } return(result); } if (context.StudyLocation.ServerPartition.DuplicateSopPolicyEnum.Equals(DuplicateSopPolicyEnum.AcceptLatest)) { Platform.Log(LogLevel.Info, "Duplicate SOP Instance received, overwriting {0}", result.SopInstanceUid); if (string.IsNullOrEmpty(sourceFilename)) { ProcessStoredDuplicate(context, file as DicomFile, data, DuplicateProcessingEnum.OverwriteSopAndUpdateDatabase); } else { ProcessStoredDuplicateFile(context, sourceFilename, file, data, DuplicateProcessingEnum.OverwriteSopAndUpdateDatabase); } return(result); } if (context.StudyLocation.ServerPartition.DuplicateSopPolicyEnum.Equals(DuplicateSopPolicyEnum.SendSuccess)) { Platform.Log(LogLevel.Info, "Duplicate SOP Instance received, sending success response {0}", result.SopInstanceUid); return(result); } if (context.StudyLocation.ServerPartition.DuplicateSopPolicyEnum.Equals(DuplicateSopPolicyEnum.RejectDuplicates)) { failureMessage = String.Format("Duplicate SOP Instance received, rejecting {0}", result.SopInstanceUid); Platform.Log(LogLevel.Info, failureMessage); result.SetError(DicomStatuses.DuplicateSOPInstance, failureMessage); return(result); } if (context.StudyLocation.ServerPartition.DuplicateSopPolicyEnum.Equals(DuplicateSopPolicyEnum.CompareDuplicates)) { if (string.IsNullOrEmpty(sourceFilename)) { ProcessStoredDuplicate(context, file as DicomFile, data, DuplicateProcessingEnum.Compare); } else { ProcessStoredDuplicateFile(context, sourceFilename, file, data, DuplicateProcessingEnum.Compare); } } else { failureMessage = String.Format("Duplicate SOP Instance received. Unsupported duplicate policy {0}.", context.StudyLocation.ServerPartition.DuplicateSopPolicyEnum); result.SetError(DicomStatuses.DuplicateSOPInstance, failureMessage); return(result); } return(result); }
/// <summary> /// Insert a new node into the tree, maintaining the red-black invariants. /// </summary> /// <remarks>Algorithm from Sedgewick, "Algorithms".</remarks> /// <param name="item">The new item to insert</param> /// <param name="dupPolicy">What to do if equal item is already present.</param> /// <param name="previous">If false, returned, the previous item.</param> /// <returns>false if duplicate exists, otherwise true.</returns> public bool Insert(T item, DuplicatePolicy dupPolicy, out T previous) { Node node = root; Node parent = null, gparent = null, ggparent = null; // parent, grand, a great-grantparent of node. bool wentLeft = false, wentRight = false; // direction from parent to node. bool rotated; Node duplicateFound = null; // The tree may be changed. StopEnumerations(); // We increment counts on the way down the tree. If we end up not inserting an items due // to a duplicate, we need a stack to adjust the counts back. We don't need the stack if the duplicate // policy means that we will always do an insertion. bool needStack = !((dupPolicy == DuplicatePolicy.InsertFirst) || (dupPolicy == DuplicatePolicy.InsertLast)); Node[] nodeStack = null; int nodeStackPtr = 0; // first free item on the stack. if (needStack) nodeStack = GetNodeStack(); while (node != null) { // If we find a node with two red children, split it so it doesn't cause problems // when inserting a node. if (node.left != null && node.left.IsRed && node.right != null && node.right.IsRed) { node = InsertSplit(ggparent, gparent, parent, node, out rotated); if (needStack && rotated) { nodeStackPtr -= 2; if (nodeStackPtr < 0) nodeStackPtr = 0; } } // Keep track of parent, grandparent, great-grand parent. ggparent = gparent; gparent = parent; parent = node; // Compare the key and the node. int compare = comparer.Compare(item, node.item); if (compare == 0) { // Found a node with the data already. Check duplicate policy. if (dupPolicy == DuplicatePolicy.DoNothing) { previous = node.item; // Didn't insert after all. Return counts back to their previous value. for (int i = 0; i < nodeStackPtr; ++i) nodeStack[i].DecrementCount(); return false; } else if (dupPolicy == DuplicatePolicy.InsertFirst || dupPolicy == DuplicatePolicy.ReplaceFirst) { // Insert first by treating the key as less than nodes in the tree. duplicateFound = node; compare = -1; } else { Debug.Assert(dupPolicy == DuplicatePolicy.InsertLast || dupPolicy == DuplicatePolicy.ReplaceLast); // Insert last by treating the key as greater than nodes in the tree. duplicateFound = node; compare = 1; } } Debug.Assert(compare != 0); node.IncrementCount(); if (needStack) nodeStack[nodeStackPtr++] = node; // Move to the left or right as needed to find the insertion point. if (compare < 0) { node = node.left; wentLeft = true; wentRight = false; } else { node = node.right; wentRight = true; wentLeft = false; } } if (duplicateFound != null) { previous = duplicateFound.item; // Are we replacing instread of inserting? if (duplicateFound != null && (dupPolicy == DuplicatePolicy.ReplaceFirst || dupPolicy == DuplicatePolicy.ReplaceLast)) { duplicateFound.item = item; // Didn't insert after all. Return counts back to their previous value. for (int i = 0; i < nodeStackPtr; ++i) nodeStack[i].DecrementCount(); return false; } } else { previous = default(T); } // Create a new node. node = new Node(); node.item = item; node.Count = 1; // Link the node into the tree. if (wentLeft) parent.left = node; else if (wentRight) parent.right = node; else { Debug.Assert(root == null); root = node; } // Maintain the red-black policy. InsertSplit(ggparent, gparent, parent, node, out rotated); // We've added a node to the tree, so update the count. count += 1; return (duplicateFound == null); }
private Dictionary <int, KeyValuePair <ProductInStore, int> > relatedProducts; //<productID , <Product, minimum quntitiy to buy>> public LeafCondition(Dictionary <int, KeyValuePair <ProductInStore, int> > relatedProducts, int id, double discountPrecentage, Dictionary <int, ProductInStore> products, DateTime endDateDiscount, DuplicatePolicy dup) : base(id, discountPrecentage, products, endDateDiscount, dup) { this.relatedProducts = relatedProducts ?? throw new ArgumentNullException(nameof(relatedProducts)); }
public bool Insert(T item, DuplicatePolicy dupPolicy, out T previous) { Node node = root; Node parent = null, gparent = null, ggparent = null; bool wentLeft = false, wentRight = false; bool rotated; Node duplicateFound = null; StopEnumerations(); bool needStack = !((dupPolicy == DuplicatePolicy.InsertFirst) || (dupPolicy == DuplicatePolicy.InsertLast)); Node[] nodeStack = null; int nodeStackPtr = 0; if (needStack) { nodeStack = GetNodeStack(); } while (node != null) { if (node.left != null && node.left.IsRed && node.right != null && node.right.IsRed) { node = InsertSplit(ggparent, gparent, parent, node, out rotated); if (needStack && rotated) { nodeStackPtr -= 2; if (nodeStackPtr < 0) { nodeStackPtr = 0; } } } ggparent = gparent; gparent = parent; parent = node; int compare = comparer.Compare(item, node.item); if (compare == 0) { if (dupPolicy == DuplicatePolicy.DoNothing) { previous = node.item; for (int i = 0; i < nodeStackPtr; ++i) { nodeStack[i].DecrementCount(); } return(false); } else if (dupPolicy == DuplicatePolicy.InsertFirst || dupPolicy == DuplicatePolicy.ReplaceFirst) { duplicateFound = node; compare = -1; } else { Debug.Assert(dupPolicy == DuplicatePolicy.InsertLast || dupPolicy == DuplicatePolicy.ReplaceLast); duplicateFound = node; compare = 1; } } Debug.Assert(compare != 0); node.IncrementCount(); if (needStack) { nodeStack[nodeStackPtr++] = node; } if (compare < 0) { node = node.left; wentLeft = true; wentRight = false; } else { node = node.right; wentRight = true; wentLeft = false; } } if (duplicateFound != null) { previous = duplicateFound.item; if (dupPolicy == DuplicatePolicy.ReplaceFirst || dupPolicy == DuplicatePolicy.ReplaceLast) { duplicateFound.item = item; for (int i = 0; i < nodeStackPtr; ++i) { nodeStack[i].DecrementCount(); } return(false); } } else { previous = default(T); } node = new Node(); node.item = item; node.Count = 1; if (wentLeft) { parent.left = node; } else if (wentRight) { parent.right = node; } else { Debug.Assert(root == null); root = node; } InsertSplit(ggparent, gparent, parent, node, out rotated); count += 1; return(duplicateFound == null); }
// TODO: Make these values configurable #endregion #region Public Methods /// <summary> /// Inserts the duplicate DICOM file into the <see cref="WorkQueue"/> for processing (if applicable). /// </summary> /// <param name="context">The processing context.</param> /// <param name="file">Thje duplicate DICOM file being processed.</param> /// <returns>A <see cref="DicomProcessingResult"/> that contains the result of the processing.</returns> /// <remarks> /// This method inserts <see cref="ServerCommand"/> into <paramref name="context.CommandProcessor"/>. /// The outcome of the operation depends on the <see cref="DuplicateSopPolicyEnum"/> of the <see cref="ServerPartition"/>. /// If it is set to <see cref="DuplicateSopPolicyEnum.CompareDuplicates"/>, the duplicate file will be /// inserted into the <see cref="WorkQueue"/> for processing. /// </remarks> static public DicomProcessingResult Process(SopProcessingContext context, DicomFile file) { Platform.CheckForNullReference(file, "file"); Platform.CheckForNullReference(context, "context"); Platform.CheckMemberIsSet(context.Group, "parameters.Group"); Platform.CheckMemberIsSet(context.CommandProcessor, "parameters.CommandProcessor"); Platform.CheckMemberIsSet(context.StudyLocation, "parameters.StudyLocation"); var result = new DicomProcessingResult { DicomStatus = DicomStatuses.Success, Successful = true, StudyInstanceUid = file.DataSet[DicomTags.StudyInstanceUid].GetString(0, string.Empty), SeriesInstanceUid = file.DataSet[DicomTags.SeriesInstanceUid].GetString(0, string.Empty), SopInstanceUid = file.DataSet[DicomTags.SopInstanceUid].GetString(0, string.Empty), SopClassUid = file.DataSet[DicomTags.SopClassUid].GetString(0, string.Empty), AccessionNumber = file.DataSet[DicomTags.AccessionNumber].GetString(0, string.Empty) }; string failureMessage; if (SopClassIsReport(result.SopClassUid) && context.StudyLocation.ServerPartition.AcceptLatestReport) { Platform.Log(LogLevel.Info, "Duplicate Report received, overwriting {0}", result.SopInstanceUid); SaveDuplicate(context, file); context.CommandProcessor.AddCommand( new UpdateWorkQueueCommand(file, context.StudyLocation, true, ServerPlatform.DuplicateFileExtension, context.Group)); return(result); } if (DuplicatePolicy.IsParitionDuplicatePolicyOverridden(context.StudyLocation)) { Platform.Log(LogLevel.Warn, "Duplicate instance received for study {0} on Partition {1}. Duplicate policy overridden. Will overwrite {2}", result.StudyInstanceUid, context.StudyLocation.ServerPartition.AeTitle, result.SopInstanceUid); SaveDuplicate(context, file); context.CommandProcessor.AddCommand(new UpdateWorkQueueCommand(file, context.StudyLocation, true, ServerPlatform.DuplicateFileExtension, context.Group)); return(result); } else { if (context.StudyLocation.ServerPartition.DuplicateSopPolicyEnum.Equals(DuplicateSopPolicyEnum.SendSuccess)) { Platform.Log(LogLevel.Info, "Duplicate SOP Instance received, sending success response {0}", result.SopInstanceUid); return(result); } if (context.StudyLocation.ServerPartition.DuplicateSopPolicyEnum.Equals(DuplicateSopPolicyEnum.RejectDuplicates)) { failureMessage = String.Format("Duplicate SOP Instance received, rejecting {0}", result.SopInstanceUid); Platform.Log(LogLevel.Info, failureMessage); result.SetError(DicomStatuses.DuplicateSOPInstance, failureMessage); return(result); } if (context.StudyLocation.ServerPartition.DuplicateSopPolicyEnum.Equals(DuplicateSopPolicyEnum.CompareDuplicates)) { SaveDuplicate(context, file); context.CommandProcessor.AddCommand( new UpdateWorkQueueCommand(file, context.StudyLocation, true, ServerPlatform.DuplicateFileExtension, context.Group)); } else { failureMessage = String.Format("Duplicate SOP Instance received. Unsupported duplicate policy {0}.", context.StudyLocation.ServerPartition.DuplicateSopPolicyEnum); result.SetError(DicomStatuses.DuplicateSOPInstance, failureMessage); return(result); } } return(result); }
public LogicalCondition(int id, double discountPrecentage, Dictionary <int, ProductInStore> products, DateTime endDateDiscount, DuplicatePolicy dup, LogicalConnections logical) : base(id, discountPrecentage, products, endDateDiscount, dup) { this.logical = logical; Children = new Dictionary <int, ConditionalDiscount>(); }
protected ConditionalDiscount(int id, double discountPrecentage, Dictionary <int, ProductInStore> products, DateTime endDateDiscount, DuplicatePolicy logic) { Id1 = id; this.DiscountPrecentage = discountPrecentage; this.Products = products; this.EndDateDiscount = endDateDiscount; this.Logic = logic; }
public override int addRevealedDiscountPolicy(List <KeyValuePair <String, int> > products, double discountPrecentage, int storeID, int expiredDiscountDate, int discountId, DuplicatePolicy logic) { return(1); }