Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderController.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderController.cs	(revision 9653)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderController.cs	(revision 9654)
@@ -6,6 +6,6 @@
 using HeuristicLab.Services.Optimization.Billing.Interfaces;
 using HeuristicLab.Services.Optimization.Billing.Model;
+using HeuristicLab.Services.Optimization.Web.Helpers;
 using HeuristicLab.Services.Optimization.Web.Models;
-using HeuristicLab.Services.Optimization.Web.Helpers;
 
 namespace HeuristicLab.Services.Optimization.Web.Controllers {
@@ -18,32 +18,31 @@
     // GET: /Order/
 
-        public ActionResult Index()
-        {
-          if (RedirectToLoginIfNecessary("Order", false))
-            return View();
-          return CreateOrder(new OrderModel()); //View();
-        }
+    public ActionResult Index() {
+      if (RedirectToLoginIfNecessary("Order", false))
+        return View();
+      return CreateOrder(new OrderModel()); //View();
+    }
 
-        public ActionResult Overview() {
-          if (RedirectToLoginIfNecessary("Order", false))
-            return View();
-          MembershipUser currentUser = Membership.GetUser(User.Identity.Name, true /* userIsOnline */);
-          var orders = billing.GetOrders(currentUser.UserName);
-          return View(new OverviewModel() { Orders = orders });
-        }
+    public ActionResult Overview() {
+      if (RedirectToLoginIfNecessary("Order", false))
+        return View();
+      MembershipUser currentUser = Membership.GetUser(User.Identity.Name, true /* userIsOnline */);
+      var orders = billing.GetOrders(currentUser.UserName);
+      return View(new OverviewModel() { Orders = orders });
+    }
 
 
-        [HttpPost]
-        public ActionResult CreateOrder(OrderModel model) {
-          if (RedirectToLoginIfNecessary("Order", false))
-            return View();
-          Session["order"] = model;
-          var currentUser = Membership.GetUser(User.Identity.Name, true /* userIsOnline */);
-          if (billing.GetUser(currentUser.UserName) == null) {
-            billing.SaveUser(new User() { Name = currentUser.UserName, PaymentInformation = new List<PaymentInformation>() });
-          }
-          model.User = billing.GetUser(currentUser.UserName);
-          return AddProduct();
-        }
+    [HttpPost]
+    public ActionResult CreateOrder(OrderModel model) {
+      if (RedirectToLoginIfNecessary("Order", false))
+        return View();
+      Session["order"] = model;
+      var currentUser = Membership.GetUser(User.Identity.Name, true /* userIsOnline */);
+      if (billing.GetUser(currentUser.UserName) == null) {
+        billing.SaveUser(new User() { Name = currentUser.UserName, PaymentInformation = new List<PaymentInformation>() });
+      }
+      model.User = billing.GetUser(currentUser.UserName);
+      return AddProduct();
+    }
 
     public ActionResult AddProduct() {
@@ -73,9 +72,10 @@
     [ActionName("SaveOrder")]
     public ActionResult SaveOrderPost(OrderModel orderModel) {
+      var user = billing.GetUser(UserName);
       var orderProductModel = Session["order"] as OrderModel;
       //TODO: Save order via back-end
       var order = new Order() {
         State = OrderState.Created,
-        User = new User() { Name = Membership.GetUser().UserName },
+        User = user,
         BillingType = orderModel.BillingType,
         BillingPeriod = orderModel.BillingPeriod
@@ -110,10 +110,11 @@
         oldInfo.AdditionalInformation = model.AdditionalInformation;
         oldInfo.PaymentMethod = model.Method;
-        billing.SaveUser(user);
-      }
-      else {
+        oldInfo.EntityState = State.Modified;
+      } else {
         user.PaymentInformation.Add(new PaymentInformation() { CardNumber = model.CardNumber, AdditionalInformation = model.AdditionalInformation, PaymentMethod = model.Method });
+        user.EntityState = State.Modified;
       }
 
+      billing.SaveUser(user);
       return RedirectToAction("SaveOrder");
     }
@@ -122,4 +123,60 @@
       return View();
     }
+
+    public ActionResult ContactInformation() {
+      var user = billing.GetUser(UserName);
+      var userCi = user.ContactInformation;
+      ContactInformationModel contactInformationModel = null;
+
+      if (userCi == null) {
+        contactInformationModel = new ContactInformationModel();
+      } else {
+        contactInformationModel = new ContactInformationModel() {
+          ContactInformationId = userCi.ContactInformationId,
+          FirstName = userCi.FirstName,
+          LastName = userCi.LastName,
+          Email = userCi.Email,
+          OrganizationName = userCi.OrganizationName,
+          Street = userCi.Street,
+          PostalCode = userCi.PostalCode,
+          City = userCi.City,
+          State = userCi.State
+        };
+      }
+      return View(contactInformationModel);
+    }
+
+    [HttpPost]
+    public ActionResult SaveContactInformation(ContactInformationModel model) {
+      var user = billing.GetUser(UserName);
+      var userCi = user.ContactInformation;
+      if (userCi != null) {
+        userCi.City = model.City;
+        userCi.Email = model.Email;
+        userCi.FirstName = model.FirstName;
+        userCi.LastName = model.LastName;
+        userCi.OrganizationName = model.OrganizationName;
+        userCi.PostalCode = model.PostalCode;
+        userCi.State = model.State;
+        userCi.Street = model.Street;
+        userCi.EntityState = State.Modified;
+      } else {
+        user.ContactInformation = new ContactInformation() {
+          City = model.City,
+          Email = model.Email,
+          FirstName = model.FirstName,
+          LastName = model.LastName,
+          OrganizationName = model.OrganizationName,
+          PostalCode = model.PostalCode,
+          State = model.State,
+          Street = model.Street
+        };
+        user.EntityState = State.Modified;
+      }
+
+      billing.SaveUser(user);
+
+      return RedirectToAction("SaveOrder");
+    }
   }
 }
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/HeuristicLab.Services.Optimization.Web.csproj
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/HeuristicLab.Services.Optimization.Web.csproj	(revision 9653)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/HeuristicLab.Services.Optimization.Web.csproj	(revision 9654)
@@ -305,7 +305,4 @@
     <Content Include="HeuristicLab 3.3.exe" />
     <Content Include="Mappings\tsp.xml" />
-    <Content Include="Scripts\jquery-1.4.4-vsdoc.js" />
-    <Content Include="Scripts\jquery-1.4.4.js" />
-    <Content Include="Scripts\jquery-1.4.4.min.js" />
     <Content Include="Scripts\jquery-1.5.1-vsdoc.js" />
     <Content Include="Scripts\jquery-ui-1.8.11.js" />
@@ -408,4 +405,5 @@
     <Content Include="Views\Usage\Index.cshtml" />
     <Content Include="Views\Invoice\Index.cshtml" />
+    <Content Include="Views\Order\ContactInformation.cshtml" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Models/OrderModel.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Models/OrderModel.cs	(revision 9653)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Models/OrderModel.cs	(revision 9654)
@@ -1,6 +1,4 @@
 ﻿using System;
 using System.Collections.Generic;
-using System.Linq;
-using System.Web;
 using HeuristicLab.Services.Optimization.Billing.Model;
 
@@ -9,5 +7,5 @@
   public class OrderModel {
     public BillingType BillingType { get; set; }
-    public BillingPeriod BillingPeriod { get; set; }    
+    public BillingPeriod BillingPeriod { get; set; }
     public DateTime? ActiveSince { get; set; }
     public DateTime? ActiveUntil { get; set; }
@@ -43,4 +41,16 @@
   }
 
+  public class ContactInformationModel {
+    public long ContactInformationId { get; set; }
+    public string OrganizationName { get; set; }
+    public string Street { get; set; }
+    public string City { get; set; }
+    public string State { get; set; }
+    public string PostalCode { get; set; }
+    public string LastName { get; set; }
+    public string FirstName { get; set; }
+    public string Email { get; set; }
+  }
+
   public class ProductsModel {
     public IList<Product> Products { get; set; }
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Order/ContactInformation.cshtml
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Order/ContactInformation.cshtml	(revision 9654)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Order/ContactInformation.cshtml	(revision 9654)
@@ -0,0 +1,68 @@
+﻿@model HeuristicLab.Services.Optimization.Web.Models.ContactInformationModel
+@using HeuristicLab.Services.Optimization.Web.Helpers
+@{
+  ViewBag.Title = "ContactInformation";
+}
+<h2>
+  Enter Payment Information</h2>
+@using (Html.BeginForm("SaveContactInformation", "Order")) {
+    
+  <div class="editor-label">
+    @Html.LabelFor(m => m.FirstName)
+  </div>
+  <div class="editor-field">
+    @Html.EditorFor(m => m.FirstName)
+  </div>
+
+  <div class="editor-label">
+    @Html.LabelFor(m => m.LastName)
+  </div>
+  <div class="editor-field">
+    @Html.EditorFor(m => m.LastName)
+  </div>
+  
+  <div class="editor-label">
+    @Html.LabelFor(m => m.Email)
+  </div>
+  <div class="editor-field">
+    @Html.EditorFor(m => m.Email)
+  </div>
+    
+  <div class="editor-label">
+    @Html.LabelFor(m => m.OrganizationName)
+  </div>
+  <div class="editor-field">
+    @Html.EditorFor(m => m.OrganizationName)
+  </div>
+  
+  <div class="editor-label">
+    @Html.LabelFor(m => m.Street)
+  </div>
+  <div class="editor-field">
+    @Html.EditorFor(m => m.Street)
+  </div>
+  
+  <div class="editor-label">
+    @Html.LabelFor(m => m.PostalCode)
+  </div>
+  <div class="editor-field">
+    @Html.EditorFor(m => m.PostalCode)
+  </div>
+  
+    <div class="editor-label">
+    @Html.LabelFor(m => m.City)
+  </div>
+  <div class="editor-field">
+    @Html.EditorFor(m => m.City)
+  </div>
+
+  <div class="editor-label">
+    @Html.LabelFor(m => m.State)
+  </div>
+  <div class="editor-field">
+    @Html.EditorFor(m => m.State)
+  </div>
+  <p>
+    <input type="submit" value="Save payment information" />
+  </p>
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Order/SaveOrder.cshtml
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Order/SaveOrder.cshtml	(revision 9653)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Order/SaveOrder.cshtml	(revision 9654)
@@ -25,28 +25,76 @@
 
 @if (Model.User.PaymentInformation == null || Model.User.PaymentInformation.Count == 0) {
-  <h2>You didn't specify any payment information yet. Please click @Html.ActionLink("here", "Payment") to enter the information.</h2>
+  <h2>You didn't specify any payment information yet. Please click @Html.ActionLink("here", "Payment")
+    to enter the information.</h2>
+} else {
+  <h2>Choose one of your payment options:</h2>
+  foreach (var pi in Model.User.PaymentInformation) {
+  <p>
+    @Html.Label("PaymentInformationId", string.Format("{0} ({1})", pi.PaymentMethod, pi.CardNumber))
+    @Html.RadioButton("PaymentInformationId", pi.PaymentInformationId)
+  </p>
+  }
+  <h3>Or add payment information by clicking @Html.ActionLink("here", "Payment").</h3>
 }
-else {
-    <h2>Choose one of your payment options:</h2>
-    foreach (var pi in Model.User.PaymentInformation) {
-        <p>
-         @Html.Label("PaymentInformationId", string.Format("{0} ({1})", pi.PaymentMethod, pi.CardNumber))
-         @Html.RadioButton("PaymentInformationId", pi.PaymentInformationId)
-        </p>
-    }
-    <h3>Or add payment information by clicking @Html.ActionLink("here", "Payment").</h3>
-    
-    using (Html.BeginForm("SaveOrder", "Order")) {
-    <h2>How often would you like to be billed?</h2>
-    <p>
-    @Html.RadioButtonForEnum(m => m.BillingPeriod)
-    </p>
-    <h2>Would you like to pay upfront or at the end of the period?</h2>
-    <p>
-    @Html.RadioButtonForEnum(m => m.BillingType)
-    </p>
-     <p>
-        <input type="submit" value="Save order" />
-    </p>
+
+@if (Model.User.ContactInformation == null) { 
+  <h2>You didn't specify any contact information yet. Please click @Html.ActionLink("here", "ContactInformation") 
+  to enter the information.</h2>
+} else { 
+  <h2>Contact Information</h2>
+  
+  <table>
+    <tbody>
+      <tr>
+        <td>@Html.LabelFor(m => m.User.ContactInformation.FirstName)</td>
+        <td>@Model.User.ContactInformation.FirstName</td>
+      </tr>
+      <tr>
+        <td>@Html.LabelFor(m => m.User.ContactInformation.LastName)</td>
+        <td>@Model.User.ContactInformation.LastName</td>
+      </tr>
+      <tr>
+        <td>@Html.LabelFor(m => m.User.ContactInformation.FirstName)</td>
+        <td>@Model.User.ContactInformation.FirstName</td>
+      </tr>
+      <tr>
+        <td>@Html.LabelFor(m => m.User.ContactInformation.Email)</td>
+        <td>@Model.User.ContactInformation.Email</td>
+      </tr>
+      <tr>
+        <td>@Html.LabelFor(m => m.User.ContactInformation.OrganizationName)</td>
+        <td>@Model.User.ContactInformation.OrganizationName</td>
+      </tr>
+      <tr>
+        <td>@Html.LabelFor(m => m.User.ContactInformation.Street)</td>
+        <td>@Model.User.ContactInformation.Street</td>
+      </tr>
+      <tr>
+        <td>@Html.LabelFor(m => m.User.ContactInformation.PostalCode)</td>
+        <td>@Model.User.ContactInformation.PostalCode</td>
+      </tr>
+      <tr>
+        <td>@Html.LabelFor(m => m.User.ContactInformation.City)</td>
+        <td>@Model.User.ContactInformation.City</td>
+      </tr>
+      <tr>
+        <td>@Html.LabelFor(m => m.User.ContactInformation.State)</td>
+        <td>@Model.User.ContactInformation.State</td>
+      </tr>
+    </tbody>
+  </table>
+  
+  <h3>Edit contact information by clicking @Html.ActionLink("here", "ContactInformation")</h3>
 }
+
+@if ((Model.User.PaymentInformation != null && Model.User.PaymentInformation.Count != 0) && (Model.User.ContactInformation != null)) {
+  using (Html.BeginForm("SaveOrder", "Order")) {
+  <h2>How often would you like to be billed?</h2>
+  <p>@Html.RadioButtonForEnum(m => m.BillingPeriod)</p>
+  
+  <h2>Would you like to pay upfront or at the end of the period?</h2>
+  <p>@Html.RadioButtonForEnum(m => m.BillingType)</p>
+  
+  <p><input type="submit" value="Save order" /></p>
+  }
 }
