Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace iTero.Orders.Domain.Entities
- {
- public class Order
- {
- public long Id { get; }
- public DateTime DateCreated { get; }
- public Patient Patient { get; }
- public Partner Partner { get; }
- public Rx Rx { get; }
- public IReadOnlyList<OrderDetail> OrderDetails => _orderDetails;
- private List<OrderDetail> _orderDetails { get; }
- public Contact Doctor { get; }
- public Partner ShipToPartner
- {
- get => _shipToPartner;
- private set
- {
- _isShipToPartnerSet = true;
- _shipToPartner = value;
- }
- }
- private bool _isShipToPartnerSet;
- private Partner _shipToPartner;
- public Order(long id, DateTime dateCreated,
- Patient patient, Partner partner, Rx rx, Contact doctor, List<OrderDetail> orderDetails)
- {
- Id = id;
- DateCreated = dateCreated;
- Patient = patient;
- Partner = partner;
- Rx = rx;
- Doctor = doctor;
- _orderDetails = orderDetails;
- }
- public Order SetShipToPartner(Partner partner)
- {
- ShipToPartner = partner;
- return this;
- }
- public Order AddIfNeededIdeOrderDetail(bool isDirectToLab)
- {
- var iRecordOrderDetail = _orderDetails.SingleOrDefault(od => od.CaseType == CaseType.iRecord);
- var ideOrderDetail = _orderDetails.SingleOrDefault(od =>
- od.GetType() == typeof(DigitalProductOrderDetail) &&
- ((DigitalProductOrderDetail) od).ITeroDigitalProductType == iTeroDigitalProductType.iDE_Order);
- if (!_isShipToPartnerSet)
- {
- throw new Exception("At first set shipToPartner"); //todo need some typed exception
- }
- if (ideOrderDetail != default)
- {
- throw new Exception("Ide order detail already exists "); //todo need some typed exception
- }
- if (iRecordOrderDetail != default && ShipToPartner != default || isDirectToLab)
- {
- _orderDetails.Add(
- new DigitalProductOrderDetail(default, iTeroDigitalProductType.iDE_Order,
- DateTime.UtcNow, 1,new List<WorkOrder>()));
- }
- return this;
- }
- }
- public class RegisteredOrder : Order
- {
- public RegisteredOrder
- (long id, DateTime dateCreated, Patient patient,
- Partner partner, Rx rx, Contact doctor, List<OrderDetail> orderDetails)
- : base(id, dateCreated, patient, partner, rx, doctor, orderDetails)
- {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement