112 lines
4.0 KiB
C#
112 lines
4.0 KiB
C#
namespace NetinaShop.Domain.Entities.Orders;
|
|
|
|
public partial class Order
|
|
{
|
|
public static Order Create(Guid userId)
|
|
{
|
|
return new Order(0, 0, 0, 0, 0, 0, 0, false, OrderStatus.OrderBag, DateTime.MinValue, DateTime.MinValue, 0, string.Empty, userId, OrderPaymentMethod.OnlinePayment);
|
|
|
|
}
|
|
|
|
public void AddToOrderBag(Product product, int count)
|
|
{
|
|
var orderProduct = OrderProducts.FirstOrDefault(op => op.ProductId == product.Id);
|
|
if (orderProduct == null)
|
|
{
|
|
orderProduct = OrderProduct.Create(count, product.Cost,product.PackingCost, OrderStatus.OrderBag, product.Id,product.CategoryId, this.Id);
|
|
OrderProducts.Add(orderProduct);
|
|
}
|
|
else
|
|
{
|
|
orderProduct.SetCount(count);
|
|
}
|
|
}
|
|
public void RemoveFromOrderBag(Product product, int count)
|
|
{
|
|
var orderProduct = OrderProducts.FirstOrDefault(op => op.ProductId == product.Id);
|
|
if (orderProduct != null)
|
|
{
|
|
orderProduct.SetCount(count);
|
|
if (orderProduct.Count == 0)
|
|
OrderProducts.Remove(orderProduct);
|
|
}
|
|
}
|
|
|
|
public void SetDiscount(string discountCode)
|
|
=> DiscountCode = discountCode;
|
|
public void AddOrderProduct(OrderProduct orderProduct)
|
|
=> OrderProducts.Add(orderProduct);
|
|
|
|
public void SetSubmitOrder(OrderPaymentMethod paymentMethod)
|
|
{
|
|
switch (paymentMethod)
|
|
{
|
|
case OrderPaymentMethod.OnlinePayment:
|
|
OrderStatus = OrderStatus.Paid;
|
|
IsPayed = true;
|
|
PayedAt = DateTime.Now;
|
|
OrderAt = DateTime.Now;
|
|
PaymentMethod = paymentMethod;
|
|
break;
|
|
case OrderPaymentMethod.CardTransfer:
|
|
OrderStatus = OrderStatus.Submitted;
|
|
IsPayed = false;
|
|
OrderAt = DateTime.Now;
|
|
PaymentMethod = paymentMethod;
|
|
break;
|
|
case OrderPaymentMethod.Cash:
|
|
OrderStatus = OrderStatus.Submitted;
|
|
IsPayed = false;
|
|
OrderAt = DateTime.Now;
|
|
PaymentMethod = paymentMethod;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void AddOrderDelivery(string address, string postalCode, string receiverPhoneNumber, string receiverFullName, double deliveryCost, Guid shippingId, Guid orderId)
|
|
{
|
|
var orderDelivery = OrderDelivery.Create(address, postalCode, receiverPhoneNumber, receiverFullName, deliveryCost, shippingId, orderId);
|
|
OrderDeliveries.Add(orderDelivery);
|
|
}
|
|
|
|
public void SetTotalPrice(double totalProductPrice,
|
|
double packingPrice,
|
|
double servicePrice,
|
|
double deliveryPrice,
|
|
double discountPrice,
|
|
double taxesPrice)
|
|
{
|
|
TotalProductsPrice = totalProductPrice;
|
|
PackingPrice = packingPrice;
|
|
ServicePrice = servicePrice;
|
|
DeliveryPrice = deliveryPrice;
|
|
TaxesPrice = taxesPrice;
|
|
DiscountPrice = discountPrice;
|
|
TotalPrice = (totalProductPrice + packingPrice + servicePrice + deliveryPrice + taxesPrice) - discountPrice;
|
|
}
|
|
|
|
}
|
|
|
|
public partial class OrderProduct
|
|
{
|
|
public static OrderProduct Create(int count, double productFee, double packingFee, OrderStatus orderProductStatus, Guid productId, Guid productCategoryId, Guid orderId)
|
|
{
|
|
var productCost = count * productFee;
|
|
var packingCost = count * packingFee;
|
|
return new OrderProduct(count, productFee, productCost,packingFee,packingCost, orderProductStatus, productId,productCategoryId, orderId);
|
|
}
|
|
|
|
public void SetCount(int count)
|
|
{
|
|
Count = count;
|
|
var productCost = ProductFee * Count;
|
|
}
|
|
}
|
|
|
|
public partial class OrderDelivery
|
|
{
|
|
public static OrderDelivery Create(string address, string postalCode, string receiverPhoneNumber, string receiverFullName, double deliveryCost, Guid shippingId, Guid orderId)
|
|
{
|
|
return new OrderDelivery(address, postalCode, receiverPhoneNumber, receiverFullName, deliveryCost, shippingId, orderId);
|
|
}
|
|
} |