Пример #1
0
        /// <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));
            }
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        /// <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);
        }