Exemplo n.º 1
0
            public static TimeAndMaterialJobOrder CreateNewInstance(IJobOrderNumberGenerator jobOrderNumberGenerator, Guid customerId, string customerName, Guid managerId, string managerName, decimal?value, DateTime dateOfStart, DateTime?dateOfExpiration, string name, string purchaseOrderNumber, string description)
            {
                var id       = Guid.NewGuid();
                var jobOrder = new TimeAndMaterialJobOrder()
                {
                    Id                  = id,
                    Customer            = new CustomerInfo(customerId, customerName),
                    Manager             = new ManagerInfo(managerId, managerName),
                    Value               = value,
                    DateOfStart         = dateOfStart,
                    DateOfExpiration    = dateOfExpiration,
                    Name                = name,
                    Number              = jobOrderNumberGenerator.Generate(),
                    IsCompleted         = false,
                    PurchaseOrderNumber = purchaseOrderNumber,
                    Description         = description
                };
                var @event = new TimeAndMaterialJobOrderRegisteredEvent(
                    jobOrder.Id,
                    jobOrder.Customer.Id,
                    jobOrder.Customer.Name,
                    jobOrder.Manager.Id,
                    jobOrder.Manager.Name,
                    jobOrder.Value,
                    jobOrder.DateOfStart,
                    jobOrder.DateOfExpiration,
                    jobOrder.Name,
                    jobOrder.Number,
                    jobOrder.PurchaseOrderNumber,
                    jobOrder.Description
                    );

                jobOrder.RaiseEvent(@event);
                return(jobOrder);
            }
Exemplo n.º 2
0
 public void ApplyEvent([AggregateId(nameof(TimeAndMaterialJobOrderRegisteredEvent.JobOrderId))] TimeAndMaterialJobOrderRegisteredEvent evt)
 {
     Id                  = evt.JobOrderId;
     CustomerId          = evt.CustomerId;
     ManagerId           = evt.ManagerId;
     Value               = new PositiveMoney(evt.Value, evt.Currency);
     DateOfStart         = evt.DateOfStart;
     DateOfExpiration    = evt.DateOfExpiration;
     Name                = evt.JobOrderName;
     Number              = evt.JobOrderNumber;
     IsCompleted         = false;
     PurchaseOrderNumber = evt.PurchaseOrderNumber;
     Description         = evt.Description;
 }
Exemplo n.º 3
0
            public static TimeAndMaterialJobOrder CreateNewInstance(IJobOrderNumberGenerator jobOrderNumberGenerator, Guid customerId, Guid managerId, decimal value, string currency, DateTime dateOfStart, DateTime?dateOfExpiration, string name, string purchaseOrderNumber, string description)
            {
                if (jobOrderNumberGenerator == null)
                {
                    throw new ArgumentNullException(nameof(jobOrderNumberGenerator));
                }
                if (value < 0)
                {
                    throw new ArgumentException("The value must be zero or higher", nameof(value));
                }
                if (string.IsNullOrWhiteSpace(currency))
                {
                    throw new ArgumentException("The currency must me specified", nameof(currency));
                }
                if (dateOfExpiration.HasValue && dateOfExpiration.Value < dateOfStart)
                {
                    throw new ArgumentException("The date of expiration cannot precede the starting date", nameof(dateOfExpiration));
                }
                if (string.IsNullOrWhiteSpace(name))
                {
                    throw new ArgumentException("The job order must have a name", nameof(name));
                }

                var @event = new TimeAndMaterialJobOrderRegisteredEvent(
                    Guid.NewGuid(),
                    customerId,
                    managerId,
                    value,
                    currency,
                    dateOfStart,
                    dateOfExpiration,
                    name,
                    jobOrderNumberGenerator.Generate(),
                    purchaseOrderNumber,
                    description
                    );
                var jobOrder = new TimeAndMaterialJobOrder();

                jobOrder.RaiseEvent(@event);
                return(jobOrder);
            }
Exemplo n.º 4
0
            public static TimeAndMaterialJobOrder CreateNewInstance(IJobOrderNumberGenerator jobOrderNumberGenerator, Guid customerId, string customerName, Guid managerId, string managerName, decimal value, string currency, DateTime dateOfStart, DateTime?dateOfExpiration, string name, string purchaseOrderNumber, string description)
            {
                var @event = new TimeAndMaterialJobOrderRegisteredEvent(
                    Guid.NewGuid(),
                    customerId,
                    customerName,
                    managerId,
                    managerName,
                    value,
                    currency,
                    dateOfStart,
                    dateOfExpiration,
                    name,
                    jobOrderNumberGenerator.Generate(),
                    purchaseOrderNumber,
                    description
                    );
                var jobOrder = new TimeAndMaterialJobOrder();

                jobOrder.RaiseEvent(@event);
                return(jobOrder);
            }