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