public void NotifyTransferSuccess(string pOrderNumber) { using (var lScope = new TransactionScope()) { var orderNumber = Guid.Parse(pOrderNumber); using (var lContainer = new VideoStoreEntityModelContainer()) { var order = lContainer.Orders.Include("Customer").Include("OrderItems.Media.Stocks").FirstOrDefault(pOrder => pOrder.OrderNumber == orderNumber); try { if (order != null) { order.UpdateStockLevels(); PlaceDeliveryForOrder(order); lContainer.Orders.ApplyChanges(order); lContainer.SaveChanges(); lScope.Complete(); } } catch (Exception lException) { SendOrderErrorMessage(order, lException); throw; } } } }
public void NotifyTransferFailed(string pOrderNumber, string reason) { using (var lScope = new TransactionScope()) { var orderNumber = Guid.Parse(pOrderNumber); using (var lContainer = new VideoStoreEntityModelContainer()) { var order = lContainer.Orders.Include("Customer").FirstOrDefault(pOrder => pOrder.OrderNumber == orderNumber); try { if (order != null) { EmailProvider.SendMessage(new EmailMessage() { ToAddress = order.Customer.Email, Message = "There was an error in processsing your order " + order.OrderNumber + ": " + reason + ". Please contact Video Store" }); lScope.Complete(); } } catch (Exception lException) { SendOrderErrorMessage(order, lException); throw; } } } }
public void ChangeOrderPaymentStatus(Message pMessage) { TransferMessage tMessage = pMessage as TransferMessage; Guid pOrderNumber = tMessage.OrderGuid; Console.WriteLine("change ----- - - - --" + pOrderNumber); using (TransactionScope lScope = new TransactionScope()) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { Order order = lContainer.Orders.Include("OrderItems.Media.Stocks").Include("Customer.LoginCredential").Where((tOrder) => tOrder.OrderNumber == pOrderNumber).FirstOrDefault(); //LoadMediaStocks(order); MarkAppropriateUnchangedAssociations(order); Console.WriteLine("Change status"); if (tMessage.BTransfer) { order.OrderStatus = "payed"; } else { Console.WriteLine("revert stock"); order.OrderStatus = "fail"; order.RevertStockLevels(); } lContainer.Orders.ApplyChanges(order); lContainer.SaveChanges(); lScope.Complete(); } } }
public void DeliverySubmitted(Guid pOrderNumber, Guid pDeliveryIdentifier) { using (TransactionScope lScope = new TransactionScope()) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { Order order = lContainer.Orders.Include("Customer") .Include("OrderItems") .Include("OrderItems.Media") .Include("OrderItems.Media.Stocks").FirstOrDefault(x => x.OrderNumber == pOrderNumber); Delivery lDelivery = new Delivery() { DeliveryStatus = DeliveryStatus.Submitted, SourceAddress = "Video Store Address", DestinationAddress = order.Customer.Address, Order = order, ExternalDeliveryIdentifier = pDeliveryIdentifier }; order.Delivery = lDelivery; order.UpdateStockLevels(); SendOrderPlacedConfirmation(order); lContainer.SaveChanges(); lScope.Complete(); } } }
public Media GetMediaById(int pId) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { return(lContainer.Media.Include("Stocks").First(p => p.Id == pId)); } }
private Order RetrieveDeliveryOrderByOrderNumber(Guid pOrderNumber) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { return(lContainer.Orders.Include("Customer").Where((aOrder) => aOrder.OrderNumber == pOrderNumber).FirstOrDefault()); } }
public User GetReviewAuthorByReview(int reviewId) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { return(lContainer.Users.First(p => p.Id == reviewId)); } }
public void SubmitOrder(Order pOrder) { using (TransactionScope lScope = new TransactionScope()) { LoadMediaStocks(pOrder); MarkAppropriateUnchangedAssociations(pOrder); using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { try { Console.WriteLine("Saving temporary"); pOrder.OrderNumber = Guid.NewGuid(); lContainer.Orders.ApplyChanges(pOrder); TransferFundsFromCustomer(UserProvider.ReadUserById(pOrder.Customer.Id).BankAccountNumber, pOrder.Total ?? 0.0, pOrder.OrderNumber, pOrder.Customer.Id); Console.WriteLine("Funds Transfer Requested"); lContainer.SaveChanges(); lScope.Complete(); } catch (Exception lException) { SendOrderErrorMessage(pOrder, lException); throw; } } } }
public void PlaceDeliveryForOrder(Order pOrder) { using (TransactionScope lScope = new TransactionScope()) using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { Delivery lDelivery = new Delivery() { ExternalDeliveryIdentifier = Guid.NewGuid(), DeliveryStatus = DeliveryStatus.Submitted, SourceAddress = "Video Store Address", DestinationAddress = pOrder.Customer.Address, Order = pOrder }; DeliveryServiceClient lClient = new DeliveryServiceClient(); lClient.SubmitDelivery(new DeliveryInfo() { DeliveryIdentifier = lDelivery.ExternalDeliveryIdentifier, OrderNumber = lDelivery.Order.OrderNumber.ToString(), SourceAddress = lDelivery.SourceAddress, DestinationAddress = lDelivery.DestinationAddress, DeliveryNotificationAddress = "net.msmq://localhost/private/DeliveryNotificationService" }); // update the number of stock corresponding to this order and save the delivery with the order //pOrder.UpdateStockLevels(); We are not updating the stock levels with putting deliver any more pOrder.Delivery = lDelivery; lContainer.Orders.ApplyChanges(pOrder); lContainer.Deliveries.ApplyChanges(lDelivery); lContainer.SaveChanges(); lScope.Complete(); } }
public Order GetOrderByOrderNumber(Guid pOrderNumber) { using (var lContainer = new VideoStoreEntityModelContainer()) { return(lContainer.Orders.Include("Customer").Where((pOrder) => (pOrder.OrderNumber == pOrderNumber)).FirstOrDefault()); } }
public void NotifyTransferResult(bool pResult, string pDescription, string pOrderNumber) { using (TransactionScope lScope = new TransactionScope()) { Console.WriteLine(pDescription); using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { Order lOrder = ServiceLocator.Current.GetInstance <IOrderProvider>().GetOrderByOrderNumber(Guid.Parse(pOrderNumber)); LoadMediaStocks(lOrder); MarkAppropriateUnchangedAssociations(lOrder); Console.WriteLine(lOrder.OrderItems[0].Media.Stocks.Quantity); Console.WriteLine(lOrder.OrderItems[0].Quantity); if (lOrder != null) { if (pResult) { SendOrderPlacedConfirmation(lOrder); PlaceDeliveryForOrder(lOrder); } else { SendOrderErrorMessage(lOrder); Console.WriteLine("Stocks have been rolled back"); lOrder.RollbackStockLevels(); } } lContainer.Orders.ApplyChanges(lOrder); lContainer.SaveChanges(); lScope.Complete(); } } }
public void FundsTransferFailed(Guid pOrderGuid) { using (TransactionScope lScope = new TransactionScope()) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { try { Console.WriteLine("Funds Transfer Error"); var pOrder = lContainer.Orders .Include("Customer").FirstOrDefault(x => x.OrderNumber == pOrderGuid); EmailProvider.SendMessage(new EmailMessage() { ToAddress = pOrder.Customer.Email, Message = "There was an error with your credit. The purchase cannot proceed." }); lContainer.SaveChanges(); lScope.Complete(); } catch (Exception lException) { Console.WriteLine("Error in FundsTransferError: " + lException.Message); throw; } } } }
private static void CreateUser() { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { if (lContainer.Users.Where((pUser) => pUser.Name == "Customer").Count() > 0) { return; } } User lCustomer = new User() { Name = "Customer", LoginCredential = new LoginCredential() { UserName = "******", Password = "******" }, Email = "*****@*****.**", Address = "1 Central Park", BankAccountNumber = 456, }; ServiceLocator.Current.GetInstance <IUserProvider>().CreateUser(lCustomer); }
public void SubmitOrder(Entities.Order pOrder) { using (TransactionScope lScope = new TransactionScope()) using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { try { // Only Request the transfer, delivery will be placed after the trasfer succeed pOrder.OrderNumber = Guid.NewGuid(); // update the stock levels for this order before the fund is transferred, //because the items should be reserved for this user // if there is anything wrong with the fund transfer, the stock levels will be added back pOrder.UpdateStockLevels(); TransferFundsFromCustomer(pOrder.OrderNumber, pOrder.Customer.BankAccountNumber, pOrder.Total ?? 0.0); Console.WriteLine("Fund transfer of order: " + pOrder.OrderNumber + " has been requested to the bank"); lContainer.Orders.ApplyChanges(pOrder); lContainer.SaveChanges(); } catch (Exception lException) { SendTransferErrorEmail(pOrder.OrderNumber, lException.Message); Console.WriteLine("Something wrong happened. The fund transferr request were not able to be placed."); Console.WriteLine("Exception Message:" + lException.Message); throw; } finally { lScope.Complete(); } } }
private static void CreateOperator() { Role lOperatorRole = new Role() { Name = "Operator" }; using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { if (lContainer.Roles.Count() > 0) { return; } } User lOperator = new User() { Name = "Operator", LoginCredential = new LoginCredential() { UserName = "******", Password = "******" }, Email = "*****@*****.**", Address = "1 Central Park" }; lOperator.Roles.Add(lOperatorRole); ServiceLocator.Current.GetInstance <IUserProvider>().CreateUser(lOperator); }
public void NotifyDeliveryProcessed(string orderNnmber, Guid pDeliveryId, DeliveryStatus status, String errorMsg) { using (TransactionScope lScope = new TransactionScope()) using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { var orderN = Guid.Parse(orderNnmber); Delivery lDelivery = lContainer.Deliveries.Include("Order.Customer").Where((pDel) => pDel.Order.OrderNumber == orderN).FirstOrDefault(); if (lDelivery != null) { lDelivery.DeliveryStatus = status; if (status == DeliveryStatus.Submitted) { lDelivery.ExternalDeliveryIdentifier = pDeliveryId; SendOrderPlacedConfirmation(lDelivery.Order); } else if (status == DeliveryStatus.Failed) { SendOrderErrorMessage(lDelivery.Order, errorMsg); } lContainer.SaveChanges(); } lScope.Complete(); } }
public List <Review> GetReviewsForMediaId(int mediaId) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { return((from Review in lContainer.Reviews where Review.MediaId == mediaId select Review).ToList()); } }
public void SubmitOrder(Entities.Order pOrder) { using (TransactionScope lScope = new TransactionScope()) { LoadMediaStocks(pOrder); MarkAppropriateUnchangedAssociations(pOrder); using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { try { pOrder.OrderNumber = Guid.NewGuid(); TransferFundsFromCustomer(UserProvider.ReadUserById(pOrder.Customer.Id).BankAccountNumber, pOrder.Total ?? 0.0); pOrder.UpdateStockLevels(); PlaceDeliveryForOrder(pOrder); lContainer.Orders.ApplyChanges(pOrder); lContainer.SaveChanges(); lScope.Complete(); } catch (Exception lException) { SendOrderErrorMessage(pOrder, lException); throw; } } } SendOrderPlacedConfirmation(pOrder); }
public Review GetReviewById(int pId) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { return(lContainer.Reviews.First(p => p.Id == pId)); } }
public void SubmitOrder(Order pOrder) { SystemWideLogging.LogServiceClient.LogEvent("VideoStore :: VideoStore.Business.Components\\OrderProvider.cs :: public void SubmitOrder(Entities.Order pOrder)", "New Order has been submitted from WebClient ( pOrder.Id=" + pOrder.Id + " )"); using (var lScope = new TransactionScope()) using (var lContainer = new VideoStoreEntityModelContainer()) { try { pOrder.OrderNumber = Guid.NewGuid(); SystemWideLogging.LogServiceClient.LogEvent("VideoStore :: VideoStore.Business.Components\\OrderProvider.cs :: public void SubmitOrder(Entities.Order pOrder)", "Requesting TransferFundsFromCustomer at Bank - asynchronously via MSMQ - ( pOrder.Id=" + pOrder.Id + " )"); TransferFundsFromCustomer(pOrder.Customer.BankAccountNumber, pOrder.Total ?? 0.0, pOrder.OrderNumber.ToString()); lContainer.Orders.ApplyChanges(pOrder); pOrder.UpdateStockLevels(); lContainer.SaveChanges(); lScope.Complete(); } catch (Exception lException) { SystemWideLogging.LogServiceClient.LogEvent("VideoStore :: VideoStore.Business.Components\\OrderProvider.cs :: public void SubmitOrder(Entities.Order pOrder)", "Error occured while requesting TransferFundsFromCustomer at Bank - asynchronously via MSMQ - ( pOrder.Id=" + pOrder.Id + ", lException.Message=" + lException.Message + " )"); ConsoleHelper.WriteLine(ConsoleColor.Red, "Error: " + lException.Message); SendOrderErrorMessage(pOrder, lException); throw; } } }
public void SubmitOrder(Entities.Order pOrder) { using (TransactionScope lScope = new TransactionScope()) { LoadMediaStocks(pOrder); MarkAppropriateUnchangedAssociations(pOrder); using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { try { pOrder.OrderNumber = Guid.NewGuid(); if (pOrder.CheckStockLevels()) { pOrder.UpdateStockLevels(); TransferFundsFromCustomer(UserProvider.ReadUserById(pOrder.Customer.Id).BankAccountNumber, pOrder.Total ?? 0.0, pOrder.OrderNumber.ToString()); } else { Console.WriteLine("Insufficient stock"); throw new Exception("Insufficient stock!"); } lContainer.Orders.ApplyChanges(pOrder); lContainer.SaveChanges(); lScope.Complete(); } catch (Exception lException) { Console.WriteLine("Error occured while upload stocks: " + lException.Message); throw; } } } }
private void LoadEntitiesForOrderSubmission(Order pOrder, VideoStoreEntityModelContainer pContainer) { foreach (OrderItem item in pOrder.OrderItems) { item.Media.Stocks = pContainer.Media.Include("Stocks").First(p => p.Id == item.Media.Id).Stocks; } }
public static void checkOrderPaymentTimeout() { using (TransactionScope lScope = new TransactionScope()) using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { List <Order> orders = lContainer.Orders.Include("OrderItems.Media.Stocks").Include("Customer.LoginCredential").Where((tOrder) => tOrder.OrderStatus == "unpayed").ToList(); Console.WriteLine(String.Format("Check Order Payment Timeout, order list length: {0}", orders.Count)); foreach (Order lOrder in orders) { DateTime orderTime = lOrder.OrderDate; DateTime now = DateTime.Now; TimeSpan timeSpan = now.Subtract(orderTime); double houres = timeSpan.TotalSeconds; if (houres > 110.0) { lOrder.OrderStatus = "expired"; //LoadMediaStocks(lOrder); MarkAppropriateUnchangedAssociations(lOrder); lOrder.RevertStockLevels(); lContainer.Orders.ApplyChanges(lOrder); lContainer.SaveChanges(); lScope.Complete(); } } } }
public List <Role> GetRolesForUserName(string pUserName) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { var lUser = lContainer.Users.Include("Roles").FirstOrDefault((pUser) => pUser.LoginCredential.UserName == pUserName); return(lUser.Roles.ToList()); } }
public User ReadUserById(int pUserId) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { User lCustomer = lContainer.Users.Include("LoginCredential").Where((pUser) => pUser.Id == pUserId).FirstOrDefault(); return(lCustomer); } }
public Order FindOrderbyOrderNumber(Guid tOrderNumber) { using (TransactionScope lScope = new TransactionScope()) using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { return(lContainer.Orders.Include("Customer").Include("OrderItems.Media.Stocks").FirstOrDefault((pOrder) => pOrder.OrderNumber == tOrderNumber)); } }
public Media GetMediaById(int pId) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { lContainer.Configuration.ProxyCreationEnabled = false; return(lContainer.Media.Include("Stocks").First(p => p.Id == pId)); } }
private Order RetrieveDeliveryOrder(Guid pDeliveryId) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { Delivery lDelivery = lContainer.Deliveries.Include("Order.Customer").Where((pDel) => pDel.ExternalDeliveryIdentifier == pDeliveryId).FirstOrDefault(); return(lDelivery.Order); } }
public List <Review> GetReviewsByUser(int userId) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { lContainer.Configuration.ProxyCreationEnabled = false; return(lContainer.Reviews.Where(p => p.User.Id == userId).ToList()); } }
public void DeleteUser(User pUser) { using (TransactionScope lScope = new TransactionScope()) using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { lContainer.Users.DeleteObject(pUser); lContainer.SaveChanges(); } }