public async Task <ActionResult <dynamic> > PutTransOrder(long orderId, TransOrder transOrder) { if (orderId != transOrder.OrderId) { return(BadRequest()); } IBusiness <TransOrder> orderBusiness = BusinessFactory <TransOrder> .Create(); bool isUpdate = false, isProductUpdate = false; var orderModel = await orderBusiness.SingleOrDefaultAsync(x => x.OrderId == orderId); IBusiness <MasterProduct> productBusiness = BusinessFactory <MasterProduct> .Create(); var productModel = await productBusiness.SingleOrDefaultAsync(x => (bool)x.Status && x.ProductId == transOrder.ProductId); if (orderModel != null && productModel != null && productModel.Availablity && productModel.Quantity >= orderModel.OrderedQuantity) { orderModel.OrderedQuantity = transOrder.OrderedQuantity; orderModel.TotalAmount = transOrder.OrderedQuantity > 0 ? transOrder.OrderedQuantity * productModel.Price : 0; orderModel.PaymentMode = transOrder.PaymentMode; orderModel.DeliveryAddress = transOrder.DeliveryAddress; orderModel.IsCancelled = transOrder.IsCancelled; orderModel.CancelledDate = DateTime.Now; orderModel.IsShipped = transOrder.IsShipped; orderModel.ShippedDate = DateTime.Now; orderModel.IsDelivered = transOrder.IsDelivered; orderModel.DeliveredDate = DateTime.Now; orderModel.IsReturned = transOrder.IsReturned; orderModel.ReturnedDate = DateTime.Now; orderModel.OrderedBy = transOrder.OrderedBy; orderModel.OrderedDate = DateTime.Now; isUpdate = await orderBusiness.Update(orderModel, orderId); } if (orderModel != null && productModel != null && ((orderModel.IsCancelled != null && (bool)orderModel.IsCancelled) || (orderModel.IsReturned != null && (bool)orderModel.IsReturned))) { productModel.Quantity += orderModel.OrderedQuantity; productModel.Availablity = productModel.Quantity > 0; isProductUpdate = await productBusiness.Update(productModel, transOrder.ProductId); } dynamic saveResult = new { isUpdate, isProductUpdate }; return(Ok(saveResult)); }
public async Task PostTransOrderTest() { var controller = new TransOrderController(); var transOrder = new TransOrder() { ProductId = 1, OrderedQuantity = 1, PaymentMode = "COD", DeliveryAddress = "Chennai-600077", OrderedBy = 1, OrderedDate = DateTime.Now }; var outputResult = await controller.PostTransOrder(transOrder); var result = outputResult.Result; var data = result.TryGetPropertyValue <bool>("isInsert"); Type type = typeof(bool); Assert.IsNotNull(data); }
public async Task PutMasterProductTest() { var controller = new TransOrderController(); int pkid = 1; var transOrder = new TransOrder() { ProductId = 1, OrderedQuantity = 1, PaymentMode = "COD", DeliveryAddress = "Delhi", OrderedBy = 1, OrderedDate = DateTime.Now }; var outputResult = await controller.PutTransOrder(pkid, transOrder); var result = outputResult.Result; var data = result.TryGetPropertyValue <bool>("isUpdate"); Type type = typeof(bool); Assert.IsNotNull(data); }
public async Task <ActionResult <dynamic> > PostTransOrder(TransOrder transOrder) { IBusiness <TransOrder> orderBusiness = BusinessFactory <TransOrder> .Create(); IBusiness <MasterProduct> productBusiness = BusinessFactory <MasterProduct> .Create(); bool isOrderInsert = false, isProductUpdate = false; var productModel = await productBusiness.SingleOrDefaultAsync(x => (bool)x.Status && x.ProductId == transOrder.ProductId && (bool)x.Availablity); if (productModel != null && productModel.Quantity >= transOrder.OrderedQuantity) { transOrder.ProductPrice = productModel.Price; transOrder.TotalAmount = productModel.Price * transOrder.OrderedQuantity; isOrderInsert = await orderBusiness.Insert(transOrder); productModel.Quantity -= transOrder.OrderedQuantity; productModel.Availablity = productModel.Quantity > 0; isProductUpdate = await productBusiness.Update(productModel, transOrder.ProductId); } dynamic result = new { isOrderInsert, isProductUpdate }; return(Ok(result)); }
private void StartNewTrip(int trordID, int truckID) { int lastItemID = 0; int nextItemID = 0; int itemsCount = 0; using (CorporationDataContext cdc = new CorporationDataContext()) { TransOrder nextTransOrder = cdc.TransOrders.Where(s => s.TransOrderID == trordID).FirstOrDefault(); Truck nextFreeTruck = cdc.Trucks.Where(s => s.TruckID == truckID).FirstOrDefault(); Thread.Sleep(1000); try { nextFreeTruck.Status = "onTrip"; cdc.SubmitChanges(); nextTransOrder.Attribute = "onWay"; cdc.SubmitChanges(); nextTransOrder.Status = "inprocess"; cdc.SubmitChanges(); } catch (Exception ex) { //MessageBox.Show("Exception: " + ex.Message); } try { itemsCount = cdc.TruckTrips.Count(); if (itemsCount == 0) { nextItemID = 770001; } else { lastItemID = cdc.TruckTrips.OrderByDescending(s => s.TruckTripID).Select(s => s.TruckTripID).First(); nextItemID = lastItemID + 1; } Boolean containsTransOrder = cdc.TruckTrips.Select(s => s.TransOrderID).Contains(trordID); if (containsTransOrder == false) { try { cdc.TruckTrips.InsertOnSubmit( new TruckTrip { TruckTripID = nextItemID, TransOrderID = trordID, TruckID = truckID, Date = DateTime.Now, Status = "open" } ); cdc.SubmitChanges(); } catch (ChangeConflictException e) { } } } catch { } } }
private void Deliver(int trordID, int truckID) { using (var cdc = new CorporationDataContext()) { // mutex.WaitOne(); TransOrder nextTransOrder = cdc.TransOrders.Where(s => s.TransOrderID == trordID).FirstOrDefault(); Truck nextTruck = cdc.Trucks.Where(s => s.TruckID == truckID).FirstOrDefault(); TruckTrip currTrip = cdc.TruckTrips.Where(s => s.TransOrderID == trordID).Single(); int distance = (int)nextTransOrder.Distance; int dur = distance * 1; Thread.Sleep(dur); try { nextTransOrder.Status = "complete"; cdc.SubmitChanges(); currTrip.Status = "complete"; cdc.SubmitChanges(); nextTruck.Status = "free"; cdc.SubmitChanges(); if (nextTransOrder.Status != "complete") { MessageBox.Show(nextTransOrder.Status, "nextTransOrder.Status= "); } if (currTrip.Status != "complete") { MessageBox.Show(currTrip.Status, "currTrip.Status= "); } if (nextTruck.Status != "free") { MessageBox.Show(nextTruck.Status, "nextTruck.Status= "); } } catch (ChangeConflictException e) { /* foreach (ObjectChangeConflict occ in cdc.ChangeConflicts) * { * occ.Resolve(RefreshMode.KeepChanges); * } */ } /* try * { * * cdc.SubmitChanges(ConflictMode.FailOnFirstConflict); * } * catch (Exception ex) * { * MessageBox.Show("Exception: " + ex.Message); * }*/ // mutex.ReleaseMutex(); } }