Thursday, 4 May 2017

Program Coding

Personally I did all the XAML coding for this program.
Besides that I also helped with some validation error codes, page button controls, coded the custom menu, and most of the SQL statements in C#.
I was also the one that provided the research (and links) for encryption (which ended up not being used), database login (Joseph was the one that implemented the database login), and database data retrieval (also known as SQLDataReader. This, again, was Joseph that ended up doing most of it, after I showed him how to do it).
I was also involved in debugging the code, was was always in the loop in order to change the layout according to changes that Joseph wanted to implement (or remove due to time constraints).

In terms of coding quantity, I believe I was involved in about 30% of all C# coding, while Joseph did 70%.

Below I will post screenshots of the XAML Code for several windows.

Login Window



Main Content Container Window



 
Unfortunately I was not able to fully complete the design on the other pages, so (besides the peronalised buttons) the text boxes and labels were not stylised properly.

Program Layout Design

One of the tasks that was re-assigned to me, after one of our members left.

This was basically backed up from the previous sprint because of that issue, so I had to make up for lost time, which I did not. The Design part went smoothly, but the implementation using XAML was a lot trickier than initially expected.

I knew I wanted a modern looking layout, not the standard backend enterprise rubbish designs that we see frequently. For the most part I accomplished this goal

Main Page


This main page was personalised from the ground up, and does not look anything like a Windows standard window, and no generic buttons (or button interactions) in sight. I had to create custom buttons, button text boxes, as well as custom XAML code for both the buttons and the text boxes, to personalise the effects that were applied in each one of them. I also gave a drop shadow to the window to give is a more aesthetic look and feel (in this picture it looks solid, but it is actually only 30% opacity).


Main Loading Container


This is an example of the main loading container. Instead of opening windows every time we click a button, we actually only load the area below the Logo/Welcome back area. That means that we only have one window, with the logo, window buttons, and menu, and all the other content is created in pages that are loaded in this window, below the other elements.
Again this window was completely customised in order to get rid of the standard button interactions, as well as creating a menu with an animation effect.

Below are more examples of the layout design that I made for the other pages.

Item Search




 User Search



 Adding Items


New Supplier


 Orders



Program Design

As a team we discussed what type of solution we would use to create the program. We decided to use a standard SQL Database which would be accessed by a program created in WPF C#.

Later we discussed the user stories, and how we would go about to implement it. After that was done, we discussed possible added features that were not included in the user stories, and how we'd implement them.

Afterwards we assigned duties to each member of the team in order to complete these tasks.

Unfortunately we lost one of our team members, so we were only two people doing all the work. Some of the assignments given to that member (the one that left) were re-assigned to other members, while others were discarded.

After discussing some more about features that would not make the cut, we re-assigned tasks and got to work.

Some of the tasks that were discarded were both code related and documentation related. To name a few, Scrum meeting minutes, Sprint meeting minutes, some extended functionality (and quality of life improvements) for the managers, a whole company re-branding (not only the logo), and proper encryption (and error collection) in the code.

Risk Log

I created the initial Risk Log, along with the details. As time went on myself and Joseph discussed, and added, a couple of more to the list.

Below is a screenshot of the Risk Log Table.


Explanation regarding the implementation of the Mitigation and Contingency can be found on the same file.

Database

Initially I created a good database that tried to be as compatible as possible with the old one, but unfortunately it was impossible to import the data from the old database to the new one, due to numerous key restrictions and different attribute types.
I then created a 2nd database that discarded the data from the original database, and assumed the data was going to be manually input afterwards. After discussing with the client it was decided to try to import the data again.
After several hours of error correction, foreign key constraints, and overall feeling of dread, I was finally able to import the data, table by table, and auto generate a script that would be able to import that data into a 3rd database.
I then coded the 3rd database and imported the information to it. Below is a screenshot of the database creation script, and another for the data import script.



Database Table Schema

Since I was the one creating the Database, and the EERD for it, it is only logical that I'd be the one producing the Table Schema as well.

Two Table Schemas were made, one that was made along side the initial EERD, and another that reflected all the changes made on the 2nd and 3rd iterations of the EERD.

Below is a screenshot of the Table Schema.