{"id":82,"date":"2016-09-28T03:20:32","date_gmt":"2016-09-28T03:20:32","guid":{"rendered":"https:\/\/softwareqs2017.pages.tcnj.edu\/?page_id=82"},"modified":"2016-09-28T03:20:32","modified_gmt":"2016-09-28T03:20:32","slug":"software-requirement-specifications","status":"publish","type":"page","link":"https:\/\/engprojects.tcnj.edu\/inventorycontrol17\/software-requirement-specifications\/","title":{"rendered":"Senior Project"},"content":{"rendered":"<p><b>Software Development For IMET Corporation <\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Senior Project \u00a0II<\/span><\/p>\n<p><span style=\"font-weight: 400\">Team: Sebastian Casas (Team Leader)<\/span><\/p>\n<p><span style=\"font-weight: 400\">Primary Advisor: Dr Orlando Hernandez (TCNJ)<\/span><\/p>\n<p><span style=\"font-weight: 400\">Secondary Advisor: Tom Krol (IMET)<\/span><\/p>\n<p><span style=\"font-weight: 400\"> Technical Advisor: Chintan Sutaria (CalcuQuote)<\/span><\/p>\n<p><span style=\"font-weight: 400\">May 2017 <\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Software Development for IMET Corporation<\/span><\/p>\n<p><span style=\"font-weight: 400\">By: Sebastian Casas<\/span><\/p>\n<p><span style=\"font-weight: 400\">A Senior Project Report Submitted in Fulfillment for the Degree of Bachelor of Science in Computer Engineering <\/span><\/p>\n<p><span style=\"font-weight: 400\">May 10, 2017<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Acknowledgements<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">I would like to express my deepest appreciation to everyone who helped me along the course of this project experience. First and foremost my primary Advisor, Dr Orlando Hernandez offered me the opportunity to work on his project and scheduled our weekly conference calls. He provided me with clarification and guidance for this project.<\/span><\/p>\n<p><span style=\"font-weight: 400\"> Furthermore I would also like to acknowledge with much appreciation the crucial role of my secondary project advisor, Tom Krol, who gave the permission to access all the required equipment and the information and hardware necessary to complete the \u00a0project. Last but not least, many thanks go to my technical advisor who provided me with an overview of the software required to complete the project. He answered many questions involving the implementation of the project and was my first point of contact when I ran into issues with software or when I needed help with how to approach something. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Abstract<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">The goal of this project was to develop software that will improve IMET\u2019s inventory control system, and hopefully at the same time optimize the company\u2019s profit. There is no current procedure set to handle the extra parts in their stock. The project consists of writing an application in C# to read through a CSV file of the extra parts in the inventory and those available for resale. Using the manufacturers\u2019 parts numbers for a part, the program then uses the Digi-Key Application Programming Interface to obtain more information on a specific part, such as its picture, description and cost. Once all of the information is obtained, the data is placed onto a server that uses Magento E-Commerce to publish the part on IMET\u2019s website (Design Notes) and make it available for purchase by the public.<\/span><\/p>\n<p><b>Keywords:<\/b><span style=\"font-weight: 400\"> Inventory Control, Database Management, C#, E-Commerce, Magento, Digi-Key, API<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Graphs and Illustrations<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><b>Figure 1. Server Diagram- Shows how the servers will work together for the SQL implementation<\/b><\/p>\n<p><b>Figure 2. Magento E-Commerce Architecture Diagram- Explains how Magento works<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><b>Figure 3. OAuth2.0 Framework Diagram- Shows the steps required to obtain an access token from Digi-Key<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><b>Introduction<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">This project was built for IMET Corporation. IMET Corporation is an award-winning resource for contract manufacturing, electronics engineering and product development for medical, industrial, military, and consumer products. They are located in Southampton, Pennsylvania. Their services include Product Development, Electronics Engineering, Contract Manufacturing, and Printed Circuit Board Assembly.<\/span><\/p>\n<p><span style=\"font-weight: 400\"> IMET is currently in the process of redesigning its retail website, Design Notes. They are making updates to their ecommerce platform. This project will be implemented on the website, once it launches. \u00a0Currently, IMET has a lot of parts in their inventory that they are not using for manufacturing. These items are just sitting there, which is not the most efficient method to go about it. This project will improve the efficiency of the company by taking those excess items in the inventory and making them available on the Design Notes website so that people can view and purchase those parts. This effort requires obtaining the available excess parts in the inventory, using the Digi-Key Application Programming Interface (API) \u00a0to obtain more information on the part such as picture and descriptions, and then pushing the data onto a server that has Magento E- Commerce installed on it. From there, Magento E-Commerce automatically pushes all of the data to the website. Magento E-Commerce offers a simple open-source ecommerce platform for online businesses and retailers<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Specifications: Software Requirements Specifications <\/b><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\"> Intended Audience and Reading Suggestion<\/span><\/i><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">All documentation, hardware, and software that was used and created for this project will be handed off to Tom Krol, of IMET Corporation who will have complete ownership of it once he is handed it. Any remaining parts needed for completion will be completed by IMETs development team. The project itself is going to be available on IMET\u2019s website Design Notes, so anyone will be able to use it.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In order to understand the functionality of this project, familiarity with database management is needed to understand the Structured Query Language (SQL) implementation. In order to understand how part information is retrieved from Digi-Key, family with using API\u2019s is imperative. All code is commented, so that people who may not be familiar with the languages will have knowledge of what is going on within the program. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Product Scope<\/span><\/i><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">The idea behind this project is to improve the efficiency of IMET&#8217;s inventory control by making the excess items appear on the Design Notes website. From a high level perspective, the steps required to accomplish this are to obtain the items in the inventory, \u00a0locate the items that are not being used, use Digi-Key\u2019s API to pull the required information for each part, and finally push all of the data to the Magento server. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Operating Environment<\/span><\/i><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"><br \/>\n<\/span> <span style=\"font-weight: 400\">I will be discussing the operating environments in which the software will operate, including the hardware platform, operating system and versions, and any other software components or applications with which it must peacefully coexist. <\/span><\/p>\n<p><span style=\"font-weight: 400\">First of all, the SQL implementation required access to IMET\u2019s EXACTMAX database which contains all of items in their inventory. This database was loaded on Microsoft SQL Server 2014. The use of operating systems used was limited to Windows for this part of the project, since that is the only operating system that supports Microsoft SQL. For the C# implementation, Microsoft Visual Studio 2015 was used to develop, run, and test all of the code. <\/span><\/p>\n<p><span style=\"font-weight: 400\">The Digi-Key API access was attempted by writing a program in C# to obtain proper authorization and access to the API by requesting and obtaining access tokens. To do this, the OpenAuthorization 2.0 security framework was implemented. The code for this is included in the appendix section of the report<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">System Feature 1<\/span><\/i><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">The first feature of this project is to obtain the extra items from the inventory that will be moved to the website. This project provides two methods to obtain those parts. The first uses SQL to query to the required tables in the EXACTMAX database. The parts available for sale were all stored at a specific stock location, so the goal was to ultimately end at that location. Once all of the queries were made, a stored procedure was created to simplify the amount of queries required to obtain the results. The second method involves IMET moving their inventory to QuickBooks. From QuickBooks, a CSV file is generated that contains all of the available parts. For this method, a C# program was created to convert the contents of the CSV file to a standard API output format. In this case, XML was chosen as the API output format. The code is in the appendix section. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">System Feature 2<\/span><\/i><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">The next feature involves establishing a connection to the API to make the required calls. In order to establish the connection a couple of steps were required. The first was to create an account with DigiKey. Once an account was created, then the application that was built had to be registered to the account. Once the application was created, two important keys are obtained. One is the Client Secret, and the other is the Client ID. These two features are passed along with the request to obtain an access token. The code for this attempt is included in the appendix section.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">System Feature 3<\/span><\/i><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">The last feature of this project is to move the parts to Design Notes. In order to accomplish this, the data had to be pushed to the Magento server. In order to access the server, Chintan Sutaria, the technical advisor of this project, created a copy of his Amazon Web Services (AWS) EC2 instance. Once the instance was running, I was provided with a PEM key. In order to access the server, I used the terminal on my computer to input \u00a0a command string that connected me to the server. This involved making sure that the PEM key that I was provided was stored in the correct directory. Once the data is loaded to this server, the items will appear on the website. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Security Requirements<\/span><\/i><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">This this project has access to IMET\u2019s inventory, the information that was accessed was confidential, and this data needed to remain safe throughout the implementation of the project. The information located in the database is already safe, since the access to the database is restricted and only authorized users have access to the connection. If this method were chosen for the implementation though, the use of the C# program would have still been needed because using the C# application requires the use of a prepared statement. A prepared statement in C# executes a stored procedure from SQL. The reason this layered protection is needed is to avoid having the application run directly from the SQL server, since it contains information on all of the databases and potentially creates a greater issue if that information were to be accessed by an unauthorized user. The security requirements for accessing the API were all handled by the Digi-Key OpenAuthorization framework, which is discussed in the report. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\"> Software Quality Attributes<\/span><\/i><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Since this project is made up of software that will be used in real-life applications, the design and implementation needed to keep software quality attributes in mind. The software quality attributes for this project are listed in this section. The first one discussed is conceptual integrity. The overall design shall be consistent and coherent (including any coding) and the web page will be organized efficiently to allow for optimal browsing experience. This part is taken care of by Magento.) The next attribute is maintainability. The system will be accepting of changes that may occur as a result of adding functionality or fixing errors and will make it easier for future updates. This attribute came in handy when changes needed to be made to the project. For example when IMET decided to move away from the database it was using before, this attribute made it easy to implement another solution. Other important attributes are reliability and availability. It is expected that the information obtained will be accurate and will be available upon request of the user. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Obstacles <\/span><\/i><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">This section describes obstacles that were encountered throughout the first and second semester of the project and the steps that were taken to find a solution. First semester obstacles will be described first. The biggest obstacle the first semester was setting up and getting access to Microsoft SQL Server. Since my personal computer uses OS X operating system, I tried to launch an instance of AWS EC2 to run Windows SQL Server. Unfortunately, because I could only use the free tier version, there were many restrictions that made launching the appropriate instance possible, so it was decided to move away from this option. The next option was to use my senior project budget to purchase a laptop online. Since my budget was limited because there was only one person on the team, I did not have a lot of flexibility in terms of choosing a laptop to buy. I purchased one online that was in the budget range. When I received the laptop I realized that it did not meet the hardware requirements to install Windows SQL Server, so it had to be returned. At this point, the end of the semester was approaching, so IMET stepped in and was generous enough to let me borrow one of their laptops. At this point, I was able to access and connect to the database. <\/span><\/p>\n<p><span style=\"font-weight: 400\">The second semester came around and when we had our first conference call, I was informed that IMET was in the process of undergoing changes that would affect my project. IMET decided to move away from the database that I was querying to, so I was told that I needed to wait to see what IMET was going to do in terms of where they keep their inventory. It was decided that they would move their inventory to QuickBooks, so a new implementation was needed for this method of accessing the inventory. This greatly affected the work that was done the first semester, since everything had to be redone up to that point for the new implementation. \u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Once I determined the steps needed to carry out the implementation, I found myself struggling with creating the part of the application that requests a token from DigiKey using OAuth 2.0. This is a very complex procedure, and the tutorials available are complex and hard to follow for people who are not experienced with it. I did as much as I could as time allowed, and got to a reasonable place. All of the code for the implementation is included in this report and was commented.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Revisions<\/span><\/i><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Date<\/span><\/td>\n<td><span style=\"font-weight: 400\">Description<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">9\/15\/16<\/span><\/td>\n<td><span style=\"font-weight: 400\">First Draft<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">9\/25\/16<\/span><\/td>\n<td><span style=\"font-weight: 400\">Revision 1- Removed unnecessary sections and added more details where needed <\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">10\/25\/16<\/span><\/td>\n<td><span style=\"font-weight: 400\">Updates system features\/defined vocabulary <\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">11\/13\/16<\/span><\/td>\n<td><span style=\"font-weight: 400\">Adjusted project requirements, introduced AWS<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">11\/26\/16<\/span><\/td>\n<td><span style=\"font-weight: 400\">First Semester rough draft, added obstacles, second semester goals <\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">1\/30\/17<\/span><\/td>\n<td><span style=\"font-weight: 400\">Updated project requirements- waiting for IMET changes<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">3\/5\/17<\/span><\/td>\n<td><span style=\"font-weight: 400\">Added C# implementation, Digi Key API <\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">4\/10\/17<\/span><\/td>\n<td><span style=\"font-weight: 400\">Updated Final System Features<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">5\/4\/17<\/span><\/td>\n<td><span style=\"font-weight: 400\">Final Draft Complete<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Chapter 1: Background and Role<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">IMET corporation is an electronics manufacturing company located in Southampton, Pennsylvania. I decided to choose this project because I was really interested in working mostly with software. Additionally, I had no prior experience with SQL or C# so I figured that this would be a great opportunity for me to increase my coding experience. This was a project consisting of only myself on the team, however there were several advisors assigned to the project to guide me through the process. One advisor was Dr Hernandez, my secondary advisor was Tom Krol from IMET, and lastly my technical advisor was Chintan Sutaria from CalcuQuote. The team planned a startup meeting to gather the exact requirements and expectations of the project.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Originally, this project was supposed to be a quoting system to quote orders from their website, but it was determined that IMET needed this functionality as soon as possible, so they went through another source to obtain this. The requirements then changed to moving the extra parts in their inventory to Design Notes so that people could purchase the parts they were not using. Chintan provided a rough schedule that I should follow which included a general idea of the steps required for the project. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Since I am the only student involved in this project, I claim full responsibility for the full life cycle of this project from gathering requirements to delivery. Additionally, I will be keeping creating and maintaining the documentation for this project including all reports and presentations. Once the semester is over, all software and the corresponding documentation will be handed off to Tom from IMET, and Chintan from CalcuQuote. Any remaining gaps in the project will be completed by Chintan\u2019s development team in order to ensure that the project will function on the new website once it launches. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Chapter 2: Conclusion <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Overall, this project was fun to work on. I have learned many things that I did not know previously, especially working with databases and two new coding languages. There were a couple delays in the first semester that were primarily caused by the Windows restriction. I tried to use my project budget to order a laptop, but it did not meet the hardware requirements to install SQL on it, so it had to be returned. Amazon AWS was looked into to set up an instance of Windows on my OSX machine, but the free tier along with security issues were delaying the project even more. Fortunately, IMET was able to provide me with a laptop at this point and at this point, the pace was picked up. The second semester obstacles were caused as a result of running out of time, since I had to change the project requirements the second semester to make up for the changes IMET was going through. \u00a0The final goal of this project, is to get all of the items available for sale from IMET\u2019s database to Design Notes. This involved querying IMET\u2019s database to the correct stock location, then using the DigiKey API service to obtain the information needed for the parts that are not in IMET\u2019s database. The remaining steps to get an access token will be carried out by IMET. The motivation behind this project was to provide IMET Corporation with a better way to manage the extra items in their inventory that they are not using. My approach to this solution provides two methods to obtain the available parts (SQL stored procedure and CSV file). \u00a0The implementation of the OAuth 2.0 authorization framework was attempted in C#. The Design Notes website is currently not live, because it is being redesigned. Once a valid access token and refresh token has been generated, the required calls will be made to the API to obtain the picture and cost of each item. This data can then be passed to the Magento Server, and Magento will populate the data to the website. Once the website relaunches, people will be presented with the option to purchase the extra items in IMET\u2019s inventory. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>References<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">&#8220;C#&#8221;, \u201cOAuth 2.0 C#\u201d, \u201cCSV to XML C#\u201d <\/span><i><span style=\"font-weight: 400\">Stack Overflow<\/span><\/i><span style=\"font-weight: 400\">.Web. 03 Mar. 2017.<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8220;C# Documentation.&#8221; <\/span><i><span style=\"font-weight: 400\">Welcome to Visual Studio 2015<\/span><\/i><span style=\"font-weight: 400\">. Microsoft, Web. 10 Apr. 2017.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Digi-Key OAuth 2.0 Protocol Tutorial, Reviewed 4\/2017. <\/span><a href=\"https:\/\/api-portal.digikey.com\/app_overview\"><span style=\"font-weight: 400\">https:\/\/api-portal.digikey.com\/app_overview<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">Magento E-Commerce Tutorial, Reviewed 4\/2107. <\/span><a href=\"https:\/\/www.tutorialspoint.com\/magento\/magento_architecture.htm\"><span style=\"font-weight: 400\">https:\/\/www.tutorialspoint.com\/magento\/magento_architecture.htm<\/span><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><b>Appendix A. Team Members<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Name: Sebastian Casas (Team Leader)<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Biography: I am a Computer Engineering major at TCNJ. I am originally from Woodbridge NJ, and I attended St Joseph High School in Metuchen, NJ. I always knew I wanted to be some type of engineer in the future and I love technology, so I decided to become a computer engineering major. Throughout my experience at TCNJ, I gained many leadership opportunities and hope to someday, pursue an advanced degree in either Systems Engineering or Software Engineering. <\/span><\/p>\n<p><span style=\"font-weight: 400\">The developer of this software project is:<\/span><\/p>\n<p><span style=\"font-weight: 400\">Sebastian Casas, who can be reached via e-mail at: casass1@tcnj.edu<\/span><\/p>\n<p><span style=\"font-weight: 400\">The primary advisor of this project is:<\/span><\/p>\n<p><span style=\"font-weight: 400\">Orlando Hernandez, who can be reached via email at hernande@tcnj.edu<\/span><\/p>\n<p><span style=\"font-weight: 400\">Supporting advisors for this project are:<\/span><\/p>\n<p><span style=\"font-weight: 400\">Tom Krol, tkrol@imetcorporation.com<\/span><\/p>\n<p><span style=\"font-weight: 400\">Chintan Sutaria, csutaria@calcuquote.com <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Appendix B. Gantt Chart <\/b><\/p>\n<p>&nbsp;<\/p>\n<p><b>Appendix C: Budget Chart<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">No money from the budget was used for this project. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Appendix D. SQL Code<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">USE EXACTMAXIMET<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">SET ANSI_NULLS ON<\/span><\/p>\n<p><span style=\"font-weight: 400\">GO<\/span><\/p>\n<p><span style=\"font-weight: 400\">SET QUOTED_IDENTIFIER ON<\/span><\/p>\n<p><span style=\"font-weight: 400\">GO<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212; =============================================<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212; Author:<\/span> <span style=\"font-weight: 400\">&lt;Sebastian Casas&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212; Create date: &lt;1\/31\/2017&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212; Description:<\/span> <span style=\"font-weight: 400\">&lt;Returns items from stock location with MPN&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212; =============================================<\/span><\/p>\n<p><span style=\"font-weight: 400\">CREATE PROCEDURE [Return_ItemsForSale]<\/span><\/p>\n<p><span style=\"font-weight: 400\">AS<\/span><\/p>\n<p><span style=\"font-weight: 400\">BEGIN<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212; SET NOCOUNT ON added to prevent extra result sets from<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8212; interfering with SELECT statements.<\/span><\/p>\n<p><span style=\"font-weight: 400\">SET NOCOUNT ON;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">&#8212; Procdure to be executed:<\/span><\/p>\n<p><span style=\"font-weight: 400\">Select V.*<\/span><\/p>\n<p><span style=\"font-weight: 400\">From Part_Stock S<\/span><\/p>\n<p><span style=\"font-weight: 400\">Join Part_Vendor V ON V.PRTNUM_07 = S.PRTNUM_06<\/span><\/p>\n<p><span style=\"font-weight: 400\">WHERE STK_06 Like &#8216;%CON1C7C%&#8217;<\/span><\/p>\n<p><span style=\"font-weight: 400\">END<\/span><\/p>\n<p><span style=\"font-weight: 400\">GO<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Appendix E. Code to Convert CSV to XML<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">using<\/span><span style=\"font-weight: 400\"> System.IO;<\/span><\/p>\n<p><span style=\"font-weight: 400\">using<\/span><span style=\"font-weight: 400\"> System.Linq;<\/span><\/p>\n<p><span style=\"font-weight: 400\">using<\/span><span style=\"font-weight: 400\"> System.Xml.Linq;<\/span><\/p>\n<p><span style=\"font-weight: 400\">using<\/span><span style=\"font-weight: 400\"> System.Xml; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">\/\/ File headers<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">namespace<\/span><span style=\"font-weight: 400\"> Convert_CsvXml<\/span><\/p>\n<p><span style=\"font-weight: 400\">{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">class<\/span> <span style=\"font-weight: 400\">Convert<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">static<\/span> <span style=\"font-weight: 400\">void<\/span><span style=\"font-weight: 400\"> Main()<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/span><\/p>\n<p><span style=\"font-weight: 400\">string<\/span><span style=\"font-weight: 400\">[] lines = <\/span><span style=\"font-weight: 400\">File<\/span><span style=\"font-weight: 400\">.ReadAllLines(<\/span><span style=\"font-weight: 400\">@&#8221;\/Users\/sebastiancasas\/Projects\/Convert_CsvXML\/output.csv&#8221;<\/span><span style=\"font-weight: 400\">); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">\/\/Read CSV file<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">XElement<\/span><span style=\"font-weight: 400\"> xml = <\/span><span style=\"font-weight: 400\">new<\/span> <span style=\"font-weight: 400\">XElement<\/span><span style=\"font-weight: 400\">(<\/span><span style=\"font-weight: 400\">&#8220;Part&#8221;<\/span><span style=\"font-weight: 400\">,<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">from<\/span><span style=\"font-weight: 400\"> str <\/span><span style=\"font-weight: 400\">in<\/span><span style=\"font-weight: 400\"> lines<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">let<\/span><span style=\"font-weight: 400\"> columns1 = str.Split(<\/span><span style=\"font-weight: 400\">&#8216;,&#8217;<\/span><span style=\"font-weight: 400\">) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">\/\/ Organize output file according to these columns in the CSV file <\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">select<\/span> <span style=\"font-weight: 400\">new<\/span> <span style=\"font-weight: 400\">XElement<\/span><span style=\"font-weight: 400\">(<\/span><span style=\"font-weight: 400\">&#8220;Part&#8221;<\/span><span style=\"font-weight: 400\">,<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">new<\/span> <span style=\"font-weight: 400\">XElement<\/span><span style=\"font-weight: 400\">(<\/span><span style=\"font-weight: 400\">&#8220;Manufacturer&#8221;<\/span><span style=\"font-weight: 400\">, columns1[<\/span><span style=\"font-weight: 400\">0<\/span><span style=\"font-weight: 400\">]),<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">new<\/span> <span style=\"font-weight: 400\">XElement<\/span><span style=\"font-weight: 400\">(<\/span><span style=\"font-weight: 400\">&#8220;MPN&#8221;<\/span><span style=\"font-weight: 400\">, columns1[<\/span><span style=\"font-weight: 400\">1<\/span><span style=\"font-weight: 400\">]),<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">new<\/span> <span style=\"font-weight: 400\">XElement<\/span><span style=\"font-weight: 400\">(<\/span><span style=\"font-weight: 400\">&#8220;Description&#8221;<\/span><span style=\"font-weight: 400\">, columns1[<\/span><span style=\"font-weight: 400\">2<\/span><span style=\"font-weight: 400\">]),<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">new<\/span> <span style=\"font-weight: 400\">XElement<\/span><span style=\"font-weight: 400\">(<\/span><span style=\"font-weight: 400\">&#8220;Quantity_on_Hand&#8221;<\/span><span style=\"font-weight: 400\">, columns1[<\/span><span style=\"font-weight: 400\">3<\/span><span style=\"font-weight: 400\">]),<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">new<\/span> <span style=\"font-weight: 400\">XElement<\/span><span style=\"font-weight: 400\">(<\/span><span style=\"font-weight: 400\">&#8220;UM&#8221;<\/span><span style=\"font-weight: 400\">, columns1[<\/span><span style=\"font-weight: 400\">4<\/span><span style=\"font-weight: 400\">]),<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">new<\/span> <span style=\"font-weight: 400\">XElement<\/span><span style=\"font-weight: 400\">(<\/span><span style=\"font-weight: 400\">&#8220;Cost&#8221;<\/span><span style=\"font-weight: 400\">, columns1[<\/span><span style=\"font-weight: 400\">5<\/span><span style=\"font-weight: 400\">])<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0xml.Save(<\/span><span style=\"font-weight: 400\">@&#8221;C:\\XMLOutputFile.xml&#8221;<\/span><span style=\"font-weight: 400\">); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">\/\/ Save contents to XML file stored on C:<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} \u00a0\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><b>Appendix F. GetToken Code <\/b><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">using<\/span><span style=\"font-weight: 400\"> System;<\/span><\/p>\n<p><span style=\"font-weight: 400\">using<\/span><span style=\"font-weight: 400\"> System.Linq;<\/span><\/p>\n<p><span style=\"font-weight: 400\">using<\/span><span style=\"font-weight: 400\"> System.Text;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">namespace<\/span><span style=\"font-weight: 400\"> TokenRequestAttempt<\/span><\/p>\n<p><span style=\"font-weight: 400\">{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">class<\/span> <span style=\"font-weight: 400\">Tests<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">\/\/These are the required classes for the jSon Object<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">class<\/span> <span style=\"font-weight: 400\">RootObject<\/span> <span style=\"font-weight: 400\">\/\/This is the main object<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">Status<\/span><span style=\"font-weight: 400\"> status { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span><span style=\"font-weight: 400\"> List&lt;<\/span><span style=\"font-weight: 400\">Datum<\/span><span style=\"font-weight: 400\">&gt; data { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span><span style=\"font-weight: 400\"> pagination pagination { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">class<\/span> <span style=\"font-weight: 400\">Status<\/span> <span style=\"font-weight: 400\">\/\/This is the jSON status<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">bool<\/span><span style=\"font-weight: 400\"> error { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">int<\/span><span style=\"font-weight: 400\"> code { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">string<\/span><span style=\"font-weight: 400\"> type { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">string<\/span><span style=\"font-weight: 400\"> message { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">class<\/span> <span style=\"font-weight: 400\">Datum<\/span> <span style=\"font-weight: 400\">\/\/This is the actual data that is returned<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">string<\/span><span style=\"font-weight: 400\"> access_token { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">string<\/span><span style=\"font-weight: 400\"> created_at { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">int<\/span><span style=\"font-weight: 400\"> expires_in { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">string<\/span><span style=\"font-weight: 400\"> refresh_token { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">string<\/span><span style=\"font-weight: 400\"> token_type { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">int<\/span><span style=\"font-weight: 400\"> account_id { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">int<\/span><span style=\"font-weight: 400\"> id { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">string<\/span><span style=\"font-weight: 400\"> email { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span><span style=\"font-weight: 400\"> custom_attributes custom_attributes { <\/span><span style=\"font-weight: 400\">get<\/span><span style=\"font-weight: 400\">; <\/span><span style=\"font-weight: 400\">set<\/span><span style=\"font-weight: 400\">; }<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">void<\/span><span style=\"font-weight: 400\"> getToken()<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">\/\/Reuse of this value will be necessary among all calls<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">\/\/Use this method first because none of the other calls can work without your access toekn<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RestSharp.Deserializers.JsonDeserializer deserial = <\/span><span style=\"font-weight: 400\">new<\/span><span style=\"font-weight: 400\"> RestSharp.Deserializers.JsonDeserializer();<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">var<\/span><span style=\"font-weight: 400\"> client = <\/span><span style=\"font-weight: 400\">new<\/span><span style=\"font-weight: 400\"> RestClient(<\/span><span style=\"font-weight: 400\">&#8220;https:\/oauth2\/token&#8221;<\/span><span style=\"font-weight: 400\">);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">var<\/span><span style=\"font-weight: 400\"> request = <\/span><span style=\"font-weight: 400\">new<\/span><span style=\"font-weight: 400\"> RestRequest(Method.POST);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.AddHeader(<\/span><span style=\"font-weight: 400\">&#8220;cache-control&#8221;<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">&#8220;no-cache&#8221;<\/span><span style=\"font-weight: 400\">);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.AddHeader(<\/span><span style=\"font-weight: 400\">&#8220;content-type&#8221;<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">&#8220;application\/json&#8221;<\/span><span style=\"font-weight: 400\">);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.RequestFormat = DataFormat.Json;<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.AddHeader(<\/span><span style=\"font-weight: 400\">&#8220;authorization&#8221;<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">&#8220;client_id:, client_secret:);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.AddParameter(<\/span><span style=\"font-weight: 400\">&#8220;application\/json&#8221;<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">&#8220;{<\/span><span style=\"font-weight: 400\">\\n\\&#8221;<\/span><span style=\"font-weight: 400\">grant_type<\/span><span style=\"font-weight: 400\">\\&#8221;<\/span><span style=\"font-weight: 400\">:<\/span><span style=\"font-weight: 400\">\\&#8221;<\/span><span style=\"font-weight: 400\">client_credentials<\/span><span style=\"font-weight: 400\">\\&#8221;\\n<\/span><span style=\"font-weight: 400\">}&#8221;<\/span><span style=\"font-weight: 400\">, ParameterType.RequestBody);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0IRestResponse response = client.Execute(request);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">RootObject<\/span><span style=\"font-weight: 400\"> returnData = deserial.Deserialize&lt;<\/span><span style=\"font-weight: 400\">RootObject<\/span><span style=\"font-weight: 400\">&gt;(response);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">if<\/span><span style=\"font-weight: 400\"> (returnData.data[<\/span><span style=\"font-weight: 400\">0<\/span><span style=\"font-weight: 400\">].access_token != <\/span><span style=\"font-weight: 400\">null<\/span><span style=\"font-weight: 400\">)<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0access = returnData.data[<\/span><span style=\"font-weight: 400\">0<\/span><span style=\"font-weight: 400\">].access_token; <\/span><span style=\"font-weight: 400\">\/\/This correctly gets the Access Token.<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">public<\/span> <span style=\"font-weight: 400\">Datum<\/span><span style=\"font-weight: 400\"> getSpecificUser(<\/span><span style=\"font-weight: 400\">string<\/span><span style=\"font-weight: 400\"> email)<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">\/\/Simple way to get a user&#8217;s information based on the email <\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">\/\/Email is passed as a variable as an example of how to use this method<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0List&lt;<\/span><span style=\"font-weight: 400\">Datum<\/span><span style=\"font-weight: 400\">&gt; OneLoginList = <\/span><span style=\"font-weight: 400\">new<\/span><span style=\"font-weight: 400\"> List&lt;<\/span><span style=\"font-weight: 400\">Datum<\/span><span style=\"font-weight: 400\">&gt;();<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RestSharp.Deserializers.JsonDeserializer deserial = <\/span><span style=\"font-weight: 400\">new<\/span><span style=\"font-weight: 400\"> RestSharp.Deserializers.JsonDeserializer();<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">var<\/span><span style=\"font-weight: 400\"> client = <\/span><span style=\"font-weight: 400\">new<\/span><span style=\"font-weight: 400\"> RestClient(<\/span><span style=\"font-weight: 400\">&#8220;https:&#8221;<\/span><span style=\"font-weight: 400\"> + email + <\/span><span style=\"font-weight: 400\">&#8220;&#8221;<\/span><span style=\"font-weight: 400\">);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">var<\/span><span style=\"font-weight: 400\"> request = <\/span><span style=\"font-weight: 400\">new<\/span><span style=\"font-weight: 400\"> RestRequest(Method.GET);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.AddHeader(<\/span><span style=\"font-weight: 400\">&#8220;cache-control&#8221;<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">&#8220;no-cache&#8221;<\/span><span style=\"font-weight: 400\">);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.AddHeader(<\/span><span style=\"font-weight: 400\">&#8220;authorization&#8221;<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">&#8220;bearer:&#8221;<\/span><span style=\"font-weight: 400\"> + access + <\/span><span style=\"font-weight: 400\">&#8220;&#8221;<\/span><span style=\"font-weight: 400\">);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0IRestResponse response = client.Execute(request);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">RootObject<\/span><span style=\"font-weight: 400\"> returnData = deserial.Deserialize&lt;<\/span><span style=\"font-weight: 400\">RootObject<\/span><span style=\"font-weight: 400\">&gt;(response);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">Datum<\/span><span style=\"font-weight: 400\"> record = returnData.data[<\/span><span style=\"font-weight: 400\">0<\/span><span style=\"font-weight: 400\">];<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">return<\/span><span style=\"font-weight: 400\"> record;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">protected<\/span> <span style=\"font-weight: 400\">void<\/span><span style=\"font-weight: 400\"> anyLeft()<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RestSharp.Deserializers.JsonDeserializer deserial = <\/span><span style=\"font-weight: 400\">new<\/span><span style=\"font-weight: 400\"> RestSharp.Deserializers.JsonDeserializer();<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">var<\/span><span style=\"font-weight: 400\"> client = <\/span><span style=\"font-weight: 400\">new<\/span><span style=\"font-weight: 400\"> RestClient(<\/span><span style=\"font-weight: 400\">&#8220;https:&#8221;<\/span><span style=\"font-weight: 400\">);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">var<\/span><span style=\"font-weight: 400\"> request = <\/span><span style=\"font-weight: 400\">new<\/span><span style=\"font-weight: 400\"> RestRequest(Method.GET);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.AddHeader(<\/span><span style=\"font-weight: 400\">&#8220;cache-control&#8221;<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">&#8220;no-cache&#8221;<\/span><span style=\"font-weight: 400\">);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0request.AddHeader(<\/span><span style=\"font-weight: 400\">&#8220;authorization&#8221;<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">&#8220;bearer:&#8221;<\/span><span style=\"font-weight: 400\"> + access + <\/span><span style=\"font-weight: 400\">&#8220;&#8221;<\/span><span style=\"font-weight: 400\">);<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0IRestResponse response = client.Execute(request);<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">RootObject<\/span><span style=\"font-weight: 400\"> returnData = deserial.Deserialize&lt;<\/span><span style=\"font-weight: 400\">RootObject<\/span><span style=\"font-weight: 400\">&gt;(response);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">var<\/span><span style=\"font-weight: 400\"> name = returnData.data;<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">string<\/span><span style=\"font-weight: 400\"> content = response.Content;<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">bool<\/span><span style=\"font-weight: 400\"> isthere = content.Contains(<\/span><span style=\"font-weight: 400\">&#8220;X-RateLimit-Remaining&#8221;<\/span><span style=\"font-weight: 400\">);<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">dynamic<\/span><span style=\"font-weight: 400\"> cc = JsonConvert.DeserializeObject&lt;<\/span><span style=\"font-weight: 400\">dynamic<\/span><span style=\"font-weight: 400\">&gt;(content);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">var<\/span><span style=\"font-weight: 400\"> RemainingCalls = cc[<\/span><span style=\"font-weight: 400\">&#8220;data&#8221;<\/span><span style=\"font-weight: 400\">][<\/span><span style=\"font-weight: 400\">&#8220;X-RateLimit-Remaining&#8221;<\/span><span style=\"font-weight: 400\">].Value;<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">var<\/span><span style=\"font-weight: 400\"> TimeToReset = cc[<\/span><span style=\"font-weight: 400\">&#8220;data&#8221;<\/span><span style=\"font-weight: 400\">][<\/span><span style=\"font-weight: 400\">&#8220;X-RateLimit-Reset&#8221;<\/span><span style=\"font-weight: 400\">].Value;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">if<\/span><span style=\"font-weight: 400\"> (RemainingCalls.ToString() == <\/span><span style=\"font-weight: 400\">&#8220;0&#8221;<\/span><span style=\"font-weight: 400\">)<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">int<\/span><span style=\"font-weight: 400\"> TimeToWait = <\/span><span style=\"font-weight: 400\">Convert<\/span><span style=\"font-weight: 400\">.ToInt32(TimeToReset) * <\/span><span style=\"font-weight: 400\">1000<\/span><span style=\"font-weight: 400\">;<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.Threading.<\/span><span style=\"font-weight: 400\">Thread<\/span><span style=\"font-weight: 400\">.Sleep(TimeToWait);<\/span><\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400\">} } }<\/span><br \/>\n<b><\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Software Development For IMET Corporation &nbsp; Senior Project \u00a0II Team: Sebastian Casas (Team Leader) Primary Advisor: Dr Orlando Hernandez (TCNJ) Secondary Advisor: Tom Krol (IMET) Technical Advisor: Chintan Sutaria (CalcuQuote) May 2017 &nbsp; &nbsp; Software Development for IMET Corporation By: Sebastian Casas A Senior Project Report Submitted in Fulfillment for the Degree of Bachelor of &hellip; <a href=\"https:\/\/engprojects.tcnj.edu\/inventorycontrol17\/software-requirement-specifications\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Senior Project<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":107,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-82","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/engprojects.tcnj.edu\/inventorycontrol17\/wp-json\/wp\/v2\/pages\/82","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/engprojects.tcnj.edu\/inventorycontrol17\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/engprojects.tcnj.edu\/inventorycontrol17\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/engprojects.tcnj.edu\/inventorycontrol17\/wp-json\/wp\/v2\/users\/107"}],"replies":[{"embeddable":true,"href":"https:\/\/engprojects.tcnj.edu\/inventorycontrol17\/wp-json\/wp\/v2\/comments?post=82"}],"version-history":[{"count":0,"href":"https:\/\/engprojects.tcnj.edu\/inventorycontrol17\/wp-json\/wp\/v2\/pages\/82\/revisions"}],"wp:attachment":[{"href":"https:\/\/engprojects.tcnj.edu\/inventorycontrol17\/wp-json\/wp\/v2\/media?parent=82"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}