BaseController;
[Route(“Orders”)]
[HttpPost]
public JsonResult addToOrders([FromForm] AddToOrderDto dto)
{
var result = homeServices.AddToOrderService(dto);
return result;
}
Orders REPO;
public JsonResult AddToOrder(AddToOrderDto dto)
{
Dictionary<string, dynamic> responseDict = new Dictionary<string, dynamic>();
Dictionary<string, dynamic> orderResponse = new Dictionary<string, dynamic>();
Dictionary<string, dynamic> deliveryResponse = new Dictionary<string, dynamic>();
Dictionary<string, dynamic> quantityResponse = new Dictionary<string, dynamic>();
try
{
// ORDER
var order = new Order()
{
UserId = dto.userID,
OrderDate = dto.orderDate,
UpdateDate = DateTime.Now,
PaymentId = dto.paymentID,
AddressId = dto.addressID,
TotalPrice = dto.totalPrice,
ShipperId = dto.shipperID,
};
db.Orders.Add(order); db.SaveChanges();
orderResponse.Add("OrderID", order.OrderId.ToString());
orderResponse.Add("User", db.UsersTbls.Where(u => u.UserId == order.UserId).Select(s => new { s.UserMail, s.UserId }).FirstOrDefault());
orderResponse.Add("OrderDate", order.OrderDate.ToString());
orderResponse.Add("UpdateDate", order.UpdateDate.ToString());
orderResponse.Add("Payment", db.Payments.Where(p => p.PaymentId == order.PaymentId).Select(s => new { s.PaymentFirstName, s.PaymentLastName, s.PaymentCardNo }).FirstOrDefault());
orderResponse.Add("Address", db.Addresses.Where(a => a.AddressId == order.AddressId).Select(s => new { s.AddressUserFirstName, s.AddressUserLastName, s.AddressPhone, s.AddressHeader, s.AddressFullAddress, s.AddressCountry, s.AddressCity, s.AddressDistrict }).FirstOrDefault());
orderResponse.Add("Shipper", db.Shippers.Where(s => s.ShipperId == order.ShipperId).Select(s => new { s.CompanyName, s.Phone, s.Email }).FirstOrDefault());
orderResponse.Add("TotalPrice", order.TotalPrice);
// DELİVERİES
foreach (var zipResult in dto.products.Zip(dto.quantities, (x, y) => (productID: x, quantity: y)))
{
var delivery = new Delivery()
{
ProductId = zipResult.productID,
OrderId = order.OrderId,
CancelllationStatu = 0,
RebateStatu = 0,
UpdateDate = DateTime.Now,
TrackingId = dto.trackingID,
DepartureDate = DateTime.Now,
DeliveryDate = DateTime.Now,
};
db.Deliveries.Add(delivery); db.SaveChanges();
deliveryResponse.Add(delivery.DeliveryId.ToString(), new Dictionary<string, dynamic>() {
{"Product", db.Products.Where(p => p.ProductId == delivery.ProductId).Select(s => new {s.ProductId,s.ProductName, s.ProductDesc, s.ProductColor, s.ProductDimensions}).FirstOrDefault() } ,
{"ProductImage", db.ProductPictures.Where(p => p.ProductId == delivery.ProductId).Select(s => s.PictureDictioneryPath).FirstOrDefault()},
{"CancellationStatu", delivery.CancelllationStatu},
{"RebateStatu", delivery.RebateStatu},
{"UpdateDate", delivery.UpdateDate },
{"Tracking", db.TrackingTbls.Where(t => t.TrackingId == delivery.TrackingId).Select(s => s.TrackingStatu).FirstOrDefault() }
});
for (int i = 0; i < zipResult.quantity; i++)
{
var quantity = new Quantity()
{
ProductId = delivery.ProductId,
DeliveryId = delivery.DeliveryId,
CancellationStatu = 0,
RebateStatu = 0
};
db.Quantities.Add(quantity); db.SaveChanges();
if (quantity.DeliveryId == delivery.DeliveryId)
{
quantityResponse.Add(quantity.Id.ToString(), new Dictionary<string, dynamic>()
{
{"QuantityID", quantity.Id },
{"DeliveryID", quantity.DeliveryId },
{"ProductID", quantity.ProductId},
{"CancellationStatu",quantity.CancellationStatu },
{"RebateStatu", quantity.RebateStatu },
});
}
if (i == dto.quantities.Count() - 1) { deliveryResponse[quantity.DeliveryId.ToString()].Add("Quantity", new List<Dictionary<string, dynamic>>() { { quantityResponse } }); }
}
quantityResponse = new Dictionary<string, dynamic>();
}
db.SaveChanges();
responseDict.Add("Statu", true);
responseDict.Add("Order", orderResponse);
responseDict.Add("Deliveries", deliveryResponse);
return new JsonResult(responseDict);
}
catch (Exception EX)
{
responseDict = new Dictionary<string, dynamic>();
responseDict.Add("Statu", false);
responseDict.Add("Error", EX.Message);
return new JsonResult(responseDict);
}
}
GİDEN İSTEK;
var orderResult = await _ap.AddToOrders(responseUserId, basketConfirmedProductIDS, Convert.ToInt32(basketNewPaymentData[“PaymentID”]), Convert.ToInt32(basketNewAddressData[“AddressID”]), 1, DateTime.Now, totalBasketPrice, quantityList, 1);