Co-op 2 Highlights 7

Week 7 has just finished up and I wanted to show a little of the progress on my current Capstone project – VARI.  VARI stands for Vineyard Attendance Reporting Index.  That name may change, but I wanted to be able to call it something while I am working on it.  Here is a screen shot of the current home page for the application:

Image

It’s been a week of ups and downs.  A major domain migration messed with my SQL Server settings (the name of my computer changed, so SQL couldn’t find the server anymore, even though it was still physically right there on the same computer – at least that’s how I understand it), and I have uninstalled and reinstalled SQL at least 6-7 times in the last few week, with no good results.  😦  From talking with our IT department, I have figured out that even though I uninstalled SQL, it still maintained some registry key history, so a new server name could not be identified (even with a new install, it was still looking for the old computer name, pre-domain-migration).  I finally have resolved to create my database in MS Access as close as I can to the original SQL database that I had created because I feel like I should be making some solid progress on this project (as it is already week 7!).  Down the road, if the project (VARI) proves to be valuable, then it can be migrated to a SQL database or even into the proprietary MySQL database, if desired.  I am patterning the tables as close as I can to the MySQL tables and even exporting a copy of the data from the tables I have copied, so hopefully that would happen easily.  However, it should also be fine as a stand-alone application.

I am also building VARI under the MVC model, so I am learning a ton as I go along, but this also is causing the project to move along at a much slower pace.

Our sister organization’s website is being remodeled and the wireframes are going to be reviewed at a meeting tonight.  Once the group reviews and determines to go ahead with a design choice, then I believe I will be more involved in this project in helping to transfer current web information over to the new format.  It will be interesting to hear everyone’s thoughts.  One thing I have learned in all my website work over the years is that people want really great websites, but don’t necessarily want to put the time into writing really great content (with the end user in mind, of course).  I have seen this with Facebook recently too.  There is a sub-group under our sister organization that has a FB page and wants to build followers.  After providing some tips and suggestions for doing this, I received a request about a month later from the director to see if I can ‘help.’

Co-op 2 Highlights 6

This past week was busy for Co-op related things.  I attended the Database Architect meeting on Thursday and was asked to outline my Capstone project to the team.  This allowed me to put into words some of my goals and hopes for the project.  The short description for the project:  I would like to create a web application that would allow for the input and reporting of weekend attendance numbers.

The details:  I currently work at a church, which has a weekend church attendance of about 5,000 people.  The current way for recording the attendance numbers for each service time (9am, 10:30am, and 11:59am on Sundays at Site A, plus additional times for each additional site) and each area (Hispanic, Students, Children, Site B, Site C, etc) is to email numbers to the person in Finance.  This person then updates a massive Excel spreadsheet each week, usually on Tuesday, and then emails the spreadsheet out to various staff for review.

Currently, if you’d like to know how attendance went this past weekend, you would need to wait until Tuesday afternoon and open the Excel spreadsheet, provided that the person in Finance isn’t on vacation, or the Student folks didn’t forget to email their numbers, etc.  There is no visualization of any kind, just a flat grid of numbers and percentages showing Current Week, 4-Week, 13-Week, and 52-Week categories.

My goal would be to create a CRUD web application in C# using the MVC pattern to allow the Hospitality staff person to input directly into the web application (using a SQL database), creating a record for that particular weekend.  In addition to a data entry portal for capturing the attendance data closer to real-time (on Sunday, as opposed to updating the spreadsheet on Tuesday), I would like to add a reporting page containing several charts that would provide a better graphical presentation of the data.  Our current database is on a MySQL platform using Apache web server and holds all of our data for events, volunteering, guest records, and financial contributions.  We currently do not have a good reporting feature for weekend attendance, other than this Excel spreadsheet.

The end goal, which could be a year or more down the line, would be to eventually export the SQL database into the Vine (the MySQL database) and use PHP code to run this web application through our proprietary graphical web interface for the Vine.  For now, it would be hosted on an IIS server and given a URL that anyone could access (with respect to the log-in and rights granted).

I received positive feedback from this team and they affirmed that the current system is limiting.

I have done some work in the last 2 weeks thinking through the tables for this SQL database and listing out what columns I will need and what tables will relate to each other.  I have also created the rough website using the MVC platform in .NET (C#).  I went ahead with the MVC platform because it will be a good learning experience.  I have identified my color scheme and modified the CSS to fit this.  I want it to blend in with the current color scheme that we use for our organization’s website and have included our organization’s logo as well.  I am also in communication with Mark, our database contractor, about the way the tables should be set up.  This is important if we really want to look at incorporating this project into the big database down the road.  I believe I am almost ready to run my queries to create all my tables and then import the data that I have.  Once that is done, I will be adding the CRUD operations to the website.

I also have embarked on a small freelance (volunteer) project for a relative.  She is looking to start a recipe and cooking blog, so I have created a WordPress site for her and added features and tweaks to make it her own.  She is an extreme novice when it comes to anything internet or computers, so I am working on my ‘explaining’ skills and will be walking her through simple processes like how to make her first blog post and how to upload a picture.

My big freelance project is slowly getting off the ground.  Their client would like me to use Visual Studio 2012 with the Sitefinity Thunder plug-in to be able to make changes to their website.  I currently have 2010 on my laptop and don’t want to mess with something that is working well.  So, our Associate Director of IT is going to build a virtual machine for me with just Visual Studio 2012 on it, so that I can begin work on this project.  I really appreciate his work here because I know that there is a major project with a domain migration happening this coming week.

Co-op Highlights 13

With regard to website development at my organization, there’s been a term, MVC, that has surfaced several times recently.  It seems that this is something that they are working towards with their web application.  I thought I would do a little research about it as I have very little knowledge about MVC.

MVC stands for Model View Controller and has actually been around for a very long time, originally known as Thing-Model-View-Editor in 1979.  It seems that MVC is an architectural pattern which puts a web application in 3 different buckets:  Model, View, and Controller.

  • The Model represents the logical structure of data in the application, along with the classes and rules for how data is changed.
  • The View is the user interface (UI) – it requests information from the Model and generates an output representation to the user.
  • The Controller sends commands to the model which updates the model’s state – it also sends commands to an associated view which can change the view’s presentation of the model (output to the user).

If you have an existing web application, you can upgrade it by adding MVC (I believe this would be the case at my work, as we have an existing web application and would want to transform it to an MVC platform).  I found this website (http://www.hanselman.com/blog/IntegratingASPNETMVC3IntoExistingUpgradedASPNET4WebFormsApplications.aspx) which is Scott Hanselman’s blog.  Scott Hanselman is also one of the authors of the Professional ASP.NET 4 book, a book I am using in another class this semester.  This particular post from January 2011 addresses the exact question – how to add MVC to an existing website.

This article seems to indicate that you could create a default ASP.NET MVC application as a reference tool and then use something like Beyond Compare (at http://scootersoftware.com/) to compare your current web application and the reference ASP.NET MVC application to determine the differences.  You then would have an option to copy over missing files or folders into your current web application project.

The article is pretty simple and straightforward – it almost seems too easy, so I’m curious if there is a lot more to this integration.  There seems to be some difference between converting a ‘website’ to incorporate MVC and converting a ‘web application’ to incorporate MVC.  I believe Scott Hanselman’s article talks specifically about a web application.  I found another website (http://jefferytay.wordpress.com/2012/04/10/getting-asp-net-mvc-3-to-work-with-asp-net-website-project/) that gives a pretty easy-to-follow example about how to add MVC to a website.

The first step seems to be making sure that you have ASP.NET MVC 3 installed (I found information here on how to do this).

The big next step concerns modifying your web.config file.  This specifically adds to the file:

<compilation><assemblies> section

<add assembly=”System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35″ /> 
<add assembly=”System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35″ /> 
<add assembly=”System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35″ />

The third step in this process is modifying the global.asax file.  You would add:

<%@ Import Namespace=”System.Web.Mvc” %> 
<%@ Import Namespace=”System.Web.Routing” %>

Add the following after <script runat=”server”>

public void RegisterGlobalFilters(GlobalFilterCollection filters) 

filters.Add(new HandleErrorAttribute()); 
}

public static void RegisterRoutes(RouteCollection routes) 

routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);

routes.MapRoute(“Home”, 
“home/{action}/{id}”, 
new { controller = “Home”, action = “Index”, id = UrlParameter.Optional });}

add the following inside application_start

RegisterGlobalFilters(GlobalFilters.Filters); 
RegisterRoutes(RouteTable.Routes);

after the <%@ Application Language=”C#” %> section.

Creating the Controller is the fourth step in this conversion process.  As a website project, the compilation happens at runtime, so the controllers are created inside the App_Code folder, instead of creating the Controller folder.  All Controllers need to end with the suffix of ‘Controller.’

Lastly, you would test your site.  Another post in StackOverflow suggests transitioning your website to a web application and then adding the MVC functionality.

Another Stack Overflow comment seemed to indicate that Scott Hanselman has updated this transition piece with a NuGet package to make conversion easier.  The steps include installing MVC3 (w/NuGet), selecting Library Package Manager through the Tools menu in Visual Studio, changing the Default Project to your web forms project, and typing ‘Install-Package AddMvc3ToWebForms.  This seems to indicate that it will add all of the necessary dlls, javascript files, and web.config settings to your website.  This website (http://delradiesdev.blogspot.com/2011/08/adding-mvc-3-to-aspnet-web-site.html) talks about this transfer in further detail.

One thing that I am also very curious about is the ‘why’ behind a lot of this.  Why would I want to transition to MVC?  Why would I chose a website vs. a web application vs. a MVC web project?  I still haven’t figured out the answers to those questions, but may post on this again if I find out more information.