Ejemplo n.º 1
0
        public void SetConditioning(ConditioningKind conditioning, decimal quantity,
                                    UnitKind unit = UnitKind.NotSpecified)
        {
            if (conditioning == ConditioningKind.Not_Specified)
            {
                throw SheaftException.Validation("Le conditionnement est requis.");
            }

            if (conditioning != ConditioningKind.Bulk)
            {
                unit = UnitKind.NotSpecified;
            }

            if (conditioning == ConditioningKind.Bouquet || conditioning == ConditioningKind.Bunch)
            {
                quantity = 1;
            }

            if (quantity <= 0)
            {
                throw SheaftException.Validation("La quantité par conditionnement ne peut pas être inférieure à 0.");
            }

            if (conditioning == ConditioningKind.Bulk && unit == UnitKind.NotSpecified)
            {
                throw SheaftException.Validation("L'unité du type de conditionnement est requis.");
            }

            Conditioning    = conditioning;
            QuantityPerUnit = quantity;
            Unit            = unit;

            RefreshPrices();
        }
Ejemplo n.º 2
0
        public Product(Guid id, string reference, string name, ConditioningKind conditioning, UnitKind unit,
                       decimal quantityPerUnit, Producer producer)
        {
            Id         = id;
            Producer   = producer ?? throw SheaftException.Validation("Le producteur du produit est requis.");
            ProducerId = producer.Id;

            SetName(name);
            SetReference(reference);
            SetConditioning(conditioning, quantityPerUnit, unit);

            Tags           = new List <ProductTag>();
            Ratings        = new List <Rating>();
            CatalogsPrices = new List <CatalogProduct>();

            DomainEvents = new List <DomainEvent>();
            VisibleTo    = VisibleToKind.None;

            RefreshRatings();
            RefreshPrices();
        }