/// <summary> /// Get Purchase Order /// </summary> /// <param name="accountId"></param> /// <param name="purchaseOrderId"></param> /// <returns></returns> public async Task <ResponseModel <PurchaseOrderDataTransformation> > GetPurchaseOrder(int accountId, int purchaseOrderId) { ResponseModel <PurchaseOrderDataTransformation> returnResponse = new ResponseModel <PurchaseOrderDataTransformation>(); PurchaseOrderDataTransformation purchaseOrderDataTransformation = new PurchaseOrderDataTransformation(); try { _purchaseOrderManagementDataService.OpenConnection(_connectionStrings.PrimaryDatabaseConnectionString); PurchaseOrder purchaseOrder = await _purchaseOrderManagementDataService.GetPurchaseOrder(accountId, purchaseOrderId); purchaseOrderDataTransformation.PurchaseOrderId = purchaseOrderId; purchaseOrderDataTransformation.PurchaseOrderNumber = purchaseOrder.PurchaseOrderNumber; purchaseOrderDataTransformation.PurchaseOrderStatusId = purchaseOrder.PurchaseOrderStatusId; purchaseOrderDataTransformation.SupplierId = purchaseOrder.Supplier.SupplierId; purchaseOrderDataTransformation.SupplierName = purchaseOrder.Supplier.Name; purchaseOrderDataTransformation.AddressLine1 = purchaseOrder.Supplier.AddressLine1; purchaseOrderDataTransformation.AddressLine2 = purchaseOrder.Supplier.AddressLine2; purchaseOrderDataTransformation.City = purchaseOrder.Supplier.City; purchaseOrderDataTransformation.Region = purchaseOrder.Supplier.Region; purchaseOrderDataTransformation.PostalCode = purchaseOrder.Supplier.PostalCode; purchaseOrderDataTransformation.OrderTotal = purchaseOrder.OrderTotal; purchaseOrderDataTransformation.PurchaseOrderStatusDescription = purchaseOrder.PurchaseOrderStatus.Description; purchaseOrderDataTransformation.DateCreated = purchaseOrder.DateCreated; purchaseOrderDataTransformation.DateUpdated = purchaseOrder.DateUpdated; purchaseOrderDataTransformation.PurchaseOrderDetails = new List <PurchaseOrderDetailDataTransformation>(); foreach (PurchaseOrderDetail purchaseOrderDetail in purchaseOrder.PurchaseOrderDetails) { PurchaseOrderDetailDataTransformation purchaseOrderDetailDataTransformation = new PurchaseOrderDetailDataTransformation(); purchaseOrderDetailDataTransformation.PurchaseOrderDetailId = purchaseOrderDetail.PurchaseOrderDetailId; purchaseOrderDetailDataTransformation.PurchaseOrderId = purchaseOrderDetail.PurchaseOrderId; purchaseOrderDetailDataTransformation.ProductId = purchaseOrderDetail.ProductId; purchaseOrderDetailDataTransformation.ProductMasterId = purchaseOrderDetail.Product.ProductMasterId; purchaseOrderDetailDataTransformation.ProductNumber = purchaseOrderDetail.Product.ProductNumber; purchaseOrderDetailDataTransformation.ProductDescription = purchaseOrderDetail.Product.Description; purchaseOrderDetailDataTransformation.UnitPrice = purchaseOrderDetail.UnitPrice; purchaseOrderDetailDataTransformation.OrderQuantity = purchaseOrderDetail.OrderQuantity; purchaseOrderDetailDataTransformation.DateCreated = purchaseOrderDetail.DateCreated; purchaseOrderDetailDataTransformation.DateUpdated = purchaseOrderDetail.DateUpdated; purchaseOrderDataTransformation.PurchaseOrderDetails.Add(purchaseOrderDetailDataTransformation); } returnResponse.ReturnStatus = true; } catch (Exception ex) { returnResponse.ReturnStatus = false; returnResponse.ReturnMessage.Add(ex.Message); } finally { _purchaseOrderManagementDataService.CloseConnection(); } returnResponse.Entity = purchaseOrderDataTransformation; return(returnResponse); }
public async Task <IActionResult> CreatePurchaseOrder([FromBody] PurchaseOrderDataTransformation purchaseOrderDataTransformation) { SecurityModel securityModel = (SecurityModel)(HttpContext.Items["SecurityModel"]); int accountId = securityModel.AccountId; purchaseOrderDataTransformation.AccountId = accountId; ResponseModel <PurchaseOrderDataTransformation> returnResponse = new ResponseModel <PurchaseOrderDataTransformation>(); try { returnResponse = await _purchaseOrderManagementBusinessService.CreatePurchaseOrder(purchaseOrderDataTransformation); returnResponse.Token = securityModel.Token; if (returnResponse.ReturnStatus == false) { return(BadRequest(returnResponse)); } return(Ok(returnResponse)); } catch (Exception ex) { returnResponse.ReturnStatus = false; returnResponse.ReturnMessage.Add(ex.Message); return(BadRequest(returnResponse)); } }
public async Task <IActionResult> SubmitPurchaseOrder([FromBody] PurchaseOrderDataTransformation purchaseOrderDataTransformation) { SecurityModel securityModel = (SecurityModel)(HttpContext.Items["SecurityModel"]); int accountId = securityModel.AccountId; purchaseOrderDataTransformation.AccountId = accountId; ResponseModel <PurchaseOrderDataTransformation> returnResponse = new ResponseModel <PurchaseOrderDataTransformation>(); try { returnResponse = await _purchaseOrderManagementBusinessService.SubmitPurchaseOrder(purchaseOrderDataTransformation); returnResponse.Token = securityModel.Token; if (returnResponse.ReturnStatus == false) { return(BadRequest(returnResponse)); } await _messageQueueContext.Clients.All.SendAsync(MessageQueueEndpoints.PurchaseOrderQueue, string.Empty); return(Ok(returnResponse)); } catch (Exception ex) { returnResponse.ReturnStatus = false; returnResponse.ReturnMessage.Add(ex.Message); return(BadRequest(returnResponse)); } }
/// <summary> /// Purchase Order Inquiry /// </summary> /// <param name="accountId"></param> /// <param name="supplierName"></param> /// <param name="currentPageNumber"></param> /// <param name="pageSize"></param> /// <param name="sortExpression"></param> /// <param name="sortDirection"></param> /// <returns></returns> public async Task <ResponseModel <List <PurchaseOrderDataTransformation> > > PurchaseOrderInquiry(int accountId, string supplierName, int currentPageNumber, int pageSize, string sortExpression, string sortDirection) { ResponseModel <List <PurchaseOrderDataTransformation> > returnResponse = new ResponseModel <List <PurchaseOrderDataTransformation> >(); List <PurchaseOrderDataTransformation> purchaseOrders = new List <PurchaseOrderDataTransformation>(); try { _purchaseOrderManagementDataService.OpenConnection(_connectionStrings.PrimaryDatabaseConnectionString); DataGridPagingInformation dataGridPagingInformation = new DataGridPagingInformation(); dataGridPagingInformation.CurrentPageNumber = currentPageNumber; dataGridPagingInformation.PageSize = pageSize; dataGridPagingInformation.SortDirection = sortDirection; dataGridPagingInformation.SortExpression = sortExpression; List <PurchaseOrder> purchaseOrderList = await _purchaseOrderManagementDataService.PurchaseOrderInquiry(accountId, supplierName, dataGridPagingInformation); foreach (PurchaseOrder purchaseOrder in purchaseOrderList) { PurchaseOrderDataTransformation purchaseOrderDataTransformation = new PurchaseOrderDataTransformation(); purchaseOrderDataTransformation.SupplierId = purchaseOrder.SupplierId; purchaseOrderDataTransformation.AddressLine1 = purchaseOrder.Supplier.AddressLine1; purchaseOrderDataTransformation.AddressLine2 = purchaseOrder.Supplier.AddressLine2; purchaseOrderDataTransformation.City = purchaseOrder.Supplier.City; purchaseOrderDataTransformation.Region = purchaseOrder.Supplier.Region; purchaseOrderDataTransformation.PostalCode = purchaseOrder.Supplier.PostalCode; purchaseOrderDataTransformation.SupplierName = purchaseOrder.Supplier.Name; purchaseOrderDataTransformation.DateCreated = purchaseOrder.DateCreated; purchaseOrderDataTransformation.OrderTotal = purchaseOrder.OrderTotal; purchaseOrderDataTransformation.AccountId = purchaseOrder.AccountId; purchaseOrderDataTransformation.PurchaseOrderId = purchaseOrder.PurchaseOrderId; purchaseOrderDataTransformation.PurchaseOrderNumber = purchaseOrder.PurchaseOrderNumber; purchaseOrderDataTransformation.PurchaseOrderStatusId = purchaseOrder.PurchaseOrderStatusId; purchaseOrderDataTransformation.PurchaseOrderStatusDescription = purchaseOrder.PurchaseOrderStatus.Description; purchaseOrders.Add(purchaseOrderDataTransformation); } returnResponse.Entity = purchaseOrders; returnResponse.TotalRows = dataGridPagingInformation.TotalRows; returnResponse.TotalPages = dataGridPagingInformation.TotalPages; returnResponse.ReturnStatus = true; } catch (Exception ex) { _purchaseOrderManagementDataService.RollbackTransaction(); returnResponse.ReturnStatus = false; returnResponse.ReturnMessage.Add(ex.Message); } finally { _purchaseOrderManagementDataService.CloseConnection(); } return(returnResponse); }
/// <summary> /// Submit Purchase Order /// </summary> /// <param name="purchaseOrderDataTransformation"></param> /// <returns></returns> public async Task <ResponseModel <PurchaseOrderDataTransformation> > SubmitPurchaseOrder(PurchaseOrderDataTransformation purchaseOrderDataTransformation) { ResponseModel <PurchaseOrderDataTransformation> returnResponse = new ResponseModel <PurchaseOrderDataTransformation>(); PurchaseOrder purchaseOrder = new PurchaseOrder(); int accountId = purchaseOrderDataTransformation.AccountId; int purchaseOrderId = purchaseOrderDataTransformation.PurchaseOrderId; try { _purchaseOrderManagementDataService.OpenConnection(_connectionStrings.PrimaryDatabaseConnectionString); _purchaseOrderManagementDataService.BeginTransaction((int)IsolationLevel.ReadCommitted); purchaseOrder = await _purchaseOrderManagementDataService.GetPurchaseOrder(accountId, purchaseOrderId); if (purchaseOrder == null) { _purchaseOrderManagementDataService.RollbackTransaction(); returnResponse.ReturnMessage.Add("Purchase Order not found"); returnResponse.ReturnStatus = false; return(returnResponse); } if (purchaseOrder.OrderTotal == 0.00) { _purchaseOrderManagementDataService.RollbackTransaction(); returnResponse.ReturnMessage.Add("Purchase Order has not value."); returnResponse.ReturnStatus = false; return(returnResponse); } purchaseOrder.PurchaseOrderStatusId = PurchaseOrderStatuses.Submitted; await _purchaseOrderManagementDataService.UpdateDatabase(); purchaseOrder = await _purchaseOrderManagementDataService.GetPurchaseOrder(accountId, purchaseOrderId); TransactionQueueOutbound transactionQueue = new TransactionQueueOutbound(); transactionQueue.Payload = GeneratePurchaseOrderSubmittedPayload(purchaseOrder); transactionQueue.TransactionCode = TransactionQueueTypes.PurchaseOrderSubmitted; transactionQueue.ExchangeName = MessageQueueExchanges.PurchaseOrderManagement; await _purchaseOrderManagementDataService.CreateOutboundTransactionQueue(transactionQueue); //await _purchaseOrderManagementDataService.UpdateDatabase(); _purchaseOrderManagementDataService.CommitTransaction(); returnResponse.ReturnStatus = true; purchaseOrderDataTransformation.PurchaseOrderStatusId = purchaseOrder.PurchaseOrderStatusId; } catch (Exception ex) { _purchaseOrderManagementDataService.RollbackTransaction(); returnResponse.ReturnStatus = false; returnResponse.ReturnMessage.Add(ex.Message); } finally { _purchaseOrderManagementDataService.CloseConnection(); } returnResponse.Entity = purchaseOrderDataTransformation; return(returnResponse); }
/// <summary> /// Create Purchase Order /// </summary> /// <param name="purchaseOrderDataTransformation"></param> /// <returns></returns> public async Task <ResponseModel <PurchaseOrderDataTransformation> > CreatePurchaseOrder(PurchaseOrderDataTransformation purchaseOrderDataTransformation) { ResponseModel <PurchaseOrderDataTransformation> returnResponse = new ResponseModel <PurchaseOrderDataTransformation>(); PurchaseOrder purchaseOrder = new PurchaseOrder(); try { _purchaseOrderManagementDataService.OpenConnection(_connectionStrings.PrimaryDatabaseConnectionString); _purchaseOrderManagementDataService.BeginTransaction((int)IsolationLevel.Serializable); PurchaseOrderNumberSequence purchaseOrderNumberSequence = await _purchaseOrderManagementDataService.GetPurchaseOrderNumberSequence(purchaseOrderDataTransformation.AccountId); if (purchaseOrderNumberSequence == null) { purchaseOrderNumberSequence = new PurchaseOrderNumberSequence(); purchaseOrderNumberSequence.AccountId = purchaseOrderDataTransformation.AccountId; purchaseOrderNumberSequence.PurchaseOrderNumber = 100000; await _purchaseOrderManagementDataService.CreatePurchaseOrderNumberSequence(purchaseOrderNumberSequence); } else { purchaseOrderNumberSequence.PurchaseOrderNumber = purchaseOrderNumberSequence.PurchaseOrderNumber + 1; await _purchaseOrderManagementDataService.UpdatePurchaseOrderNumberSequence(purchaseOrderNumberSequence); } purchaseOrder.PurchaseOrderNumber = purchaseOrderNumberSequence.PurchaseOrderNumber; purchaseOrder.AccountId = purchaseOrderDataTransformation.AccountId; purchaseOrder.SupplierId = purchaseOrderDataTransformation.SupplierId; purchaseOrder.PurchaseOrderStatusId = PurchaseOrderStatuses.Open; purchaseOrder.OrderTotal = 0.0; await _purchaseOrderManagementDataService.CreatePurchaseOrder(purchaseOrder); //await _purchaseOrderManagementDataService.UpdateDatabase(); _purchaseOrderManagementDataService.CommitTransaction(); returnResponse.ReturnStatus = true; } catch (Exception ex) { _purchaseOrderManagementDataService.RollbackTransaction(); returnResponse.ReturnStatus = false; returnResponse.ReturnMessage.Add(ex.Message); } finally { _purchaseOrderManagementDataService.CloseConnection(); } purchaseOrderDataTransformation.PurchaseOrderId = purchaseOrder.PurchaseOrderId; returnResponse.Entity = purchaseOrderDataTransformation; return(returnResponse); }