Changeset 9576
- Timestamp:
- 06/04/13 10:59:03 (12 years ago)
- Location:
- branches/OaaS
- Files:
-
- 6 added
- 1 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/OaaS/HeuristicLab 3.3 Services.sln
r9556 r9576 71 71 EndProject 72 72 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.Optimization.Billing", "HeuristicLab.Services.Optimization.Billing\HeuristicLab.Services.Optimization.Billing.csproj", "{5DC3E4F1-E21B-4C18-8921-88058E86FB07}" 73 EndProject 74 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.Optimization.Billing.Test", "HeuristicLab.Services.Optimization.Billing.Test\HeuristicLab.Services.Optimization.Billing.Test.csproj", "{07D84A1D-56B7-4A8A-87EF-303A8518D48C}" 73 75 EndProject 74 76 Global … … 374 376 {5DC3E4F1-E21B-4C18-8921-88058E86FB07}.Release|x64.ActiveCfg = Release|Any CPU 375 377 {5DC3E4F1-E21B-4C18-8921-88058E86FB07}.Release|x86.ActiveCfg = Release|Any CPU 378 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Debug|Any CPU.ActiveCfg = Debug|x86 379 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 380 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Debug|Mixed Platforms.Build.0 = Debug|x86 381 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Debug|x64.ActiveCfg = Debug|x86 382 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Debug|x86.ActiveCfg = Debug|x86 383 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Debug|x86.Build.0 = Debug|x86 384 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Release|Any CPU.ActiveCfg = Release|x86 385 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Release|Mixed Platforms.ActiveCfg = Release|x86 386 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Release|Mixed Platforms.Build.0 = Release|x86 387 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Release|x64.ActiveCfg = Release|x86 388 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Release|x86.ActiveCfg = Release|x86 389 {07D84A1D-56B7-4A8A-87EF-303A8518D48C}.Release|x86.Build.0 = Release|x86 376 390 EndGlobalSection 377 391 GlobalSection(SolutionProperties) = preSolution -
branches/OaaS/HeuristicLab.Services.Optimization.Billing/HeuristicLab.Services.Optimization.Billing.csproj
r9556 r9576 32 32 </PropertyGroup> 33 33 <ItemGroup> 34 <Reference Include="EntityFramework"> 35 <HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath> 36 </Reference> 34 37 <Reference Include="System" /> 38 <Reference Include="System.ComponentModel.DataAnnotations" /> 35 39 <Reference Include="System.Core" /> 40 <Reference Include="System.Data.Entity" /> 36 41 <Reference Include="System.ServiceModel" /> 37 42 <Reference Include="System.Xml.Linq" /> … … 42 47 </ItemGroup> 43 48 <ItemGroup> 49 <Compile Include="Business\BillingService.cs" /> 50 <Compile Include="Business\BillingServiceProvider.cs" /> 51 <Compile Include="DataAccess\BillingContext.cs" /> 52 <Compile Include="DataAccess\BillingDao.cs" /> 53 <Compile Include="Interfaces\IEntity.cs" /> 54 <Compile Include="Interfaces\IGenericDao.cs" /> 44 55 <Compile Include="Interfaces\IOptimizationBilling.cs" /> 45 <Compile Include=" MockupOptimizationBilling.cs" />56 <Compile Include="Business\MockupBillingService.cs" /> 46 57 <Compile Include="Model\Model.cs" /> 47 58 <Compile Include="Properties\AssemblyInfo.cs" /> 48 59 </ItemGroup> 60 <ItemGroup> 61 <None Include="App.config" /> 62 <None Include="packages.config" /> 63 </ItemGroup> 64 <ItemGroup /> 49 65 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 50 66 <!-- To modify your build process, add your task inside one of the targets below and uncomment it. -
branches/OaaS/HeuristicLab.Services.Optimization.Billing/Interfaces/IOptimizationBilling.cs
r9551 r9576 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 1 using System.Collections.Generic; 2 using System.Net.Security; 5 3 using System.ServiceModel; 6 using System.Net.Security;7 4 using HeuristicLab.Services.Optimization.Billing.Model; 8 5 … … 10 7 [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)] 11 8 public interface IOptimizationBilling { 9 [OperationContract] 12 10 IList<Product> GetProducts(); 11 13 12 // payment methods via enumeration 13 14 [OperationContract] 14 15 void SaveOrder(Order order); 16 17 [OperationContract] 15 18 IList<Order> GetOrdersByState(OrderState state); 16 19 } -
branches/OaaS/HeuristicLab.Services.Optimization.Billing/Model/Model.cs
r9558 r9576 1 1 using System; 2 2 using System.Collections.Generic; 3 using System.Linq;4 using System.Text;5 3 6 4 namespace HeuristicLab.Services.Optimization.Billing.Model { 7 5 public class ContactInformation { 8 public long Id { get; set; }6 public long ContactInformationId { get; set; } 9 7 public string OrganizationName { get; set; } 10 8 public string Street { get; set; } … … 26 24 27 25 public class Product { 28 public long Id { get; set; }26 public long ProductId { get; set; } 29 27 public string Name { get; set; } 30 28 public string Description { get; set; } … … 34 32 35 33 public class User { 34 public long UserId { get; set; } 36 35 public string Name { get; set; } 37 36 } … … 46 45 47 46 public class Order { 48 public long Id { get; set; }49 public User User{ get; set; }47 public long OrderId { get; set; } 48 public long UserId { get; set; } 50 49 public string BillingType { get; set; } 51 public OrderState State{ get; set; }50 public long OrderStateId { get; set; } 52 51 public string BillingPeriod { get; set; } 53 52 public DateTime ActiveSince { get; set; } 54 53 public DateTime ActiveUntil { get; set; } 55 public IList<Invoice> Invoices { get; set; } 56 public IList<OrderLine> OrderLines { get; set; } 54 55 56 public virtual User User { get; set; } 57 public virtual OrderState State { get; set; } 58 public virtual IList<Invoice> Invoices { get; set; } 59 public virtual IList<OrderLine> OrderLines { get; set; } 57 60 } 58 61 59 62 public class OrderLine { 60 public long Id { get; set; }61 public Order Order{ get; set; }62 public Product Product{ get; set; }63 public long OrderLineId { get; set; } 64 public long OrderId { get; set; } 65 public long ProductId { get; set; } 63 66 public int Quantity { get; set; } 64 67 public double ProductPrice { get; set; } 68 69 public virtual Order Order { get; set; } 70 public virtual Product Product { get; set; } 65 71 } 66 72 67 73 public class Invoice { 68 public long Id { get; set; } 69 public User User { get; set; } 74 public long InvoiceId { get; set; } 75 public long UserId { get; set; } 76 public long OrderId { get; set; } 70 77 public DateTime Due { get; set; } 71 78 public string Status { get; set; } 72 79 public string InvoiceDocument { get; set; } 73 public Order Order { get; set; } 80 81 public virtual User User { get; set; } 82 public virtual Order Order { get; set; } 74 83 } 75 84 76 85 public class InvoiceLine { 77 public long I d { get; set; }78 public Invoice Invoice{ get; set; }79 public Product Product{ get; set; }86 public long InvoiceLineId { get; set; } 87 public long InvoiceId { get; set; } 88 public long ProductId { get; set; } 80 89 public int Quantity { get; set; } 81 90 public double ProductPrice { get; set; } 91 92 public virtual Invoice Invoice { get; set; } 93 public virtual Product Product { get; set; } 82 94 } 83 95 84 public class Usage { 85 public long Id { get; set; } 86 public User User { get; set; } 87 public IList<UsageLine> UsageLines { get; set; } 96 public class UsageRecord { 97 public long UsageRecordId { get; set; } 98 public long UserId { get; set; } 99 100 public virtual User User { get; set; } 101 public virtual IList<UsageRecordLine> UsageRecordLines { get; set; } 88 102 } 89 103 90 public class Usage Line {91 public long Id { get; set; }92 public Usage Usage{ get; set; }104 public class UsageRecordLine { 105 public long UsageRecordLineId { get; set; } 106 public long UsageRecordId { get; set; } 93 107 public DateTime Begin { get; set; } 94 108 public DateTime End { get; set; } 109 110 public virtual UsageRecord UsageRecord { get; set; } 95 111 } 96 112 } -
branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderAdminController.cs
r9558 r9576 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 1 using System.Linq; 5 2 using System.Web.Mvc; 3 using HeuristicLab.Services.Optimization.Billing.Business; 4 using HeuristicLab.Services.Optimization.Billing.Interfaces; 6 5 using HeuristicLab.Services.Optimization.Web.Models; 7 using HeuristicLab.Services.Optimization.Billing.Interfaces;8 using HeuristicLab.Services.Optimization.Billing;9 6 10 namespace HeuristicLab.Services.Optimization.Web.Controllers 11 { 12 [Authorize(Roles = "Web User")] 13 public class OrderAdminController : Controller 14 { 15 private IOptimizationBilling billing = new MockupOptimizationBilling(); 7 namespace HeuristicLab.Services.Optimization.Web.Controllers { 8 [Authorize(Roles = "Web User")] 9 public class OrderAdminController : Controller { 10 private IOptimizationBilling billing = BillingServiceProvider.Instance; 16 11 17 18 12 // 13 // GET: /OrderAdmin/ 19 14 20 public ActionResult Index() 21 { 22 var orders = billing.GetOrdersByState(Billing.Model.OrderState.Created); 23 return View(new OrderAdminModel() { Orders = orders }); 24 } 15 public ActionResult Index() { 16 var orders = billing.GetOrdersByState(Billing.Model.OrderState.Created); 17 return View(new OrderAdminModel() { Orders = orders }); 18 } 25 19 26 27 28 var order = (from o in billing.GetOrdersByState(Billing.Model.OrderState.Created) where o.Id == model.OrderId select o).FirstOrDefault();29 30 31 32 33 20 [HttpPost] 21 public ActionResult ActivateOrder(OrderAdminModel model) { 22 var order = (from o in billing.GetOrdersByState(Billing.Model.OrderState.Created) where o.OrderId == model.OrderId select o).FirstOrDefault(); 23 order.State = Billing.Model.OrderState.Active; 24 // TODO: Probably activate order via different method 25 billing.SaveOrder(order); 26 return RedirectToAction("Index"); 27 } 34 28 35 29 } 36 30 } -
branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderController.cs
r9558 r9576 1 using System; 2 using System.Collections.Generic; 1 using System.Collections.Generic; 3 2 using System.Linq; 4 using System.Web;5 3 using System.Web.Mvc; 4 using System.Web.Security; 5 using HeuristicLab.Services.Optimization.Billing.Business; 6 using HeuristicLab.Services.Optimization.Billing.Interfaces; 7 using HeuristicLab.Services.Optimization.Billing.Model; 6 8 using HeuristicLab.Services.Optimization.Web.Models; 7 using HeuristicLab.Services.Optimization.Billing.Model;8 using HeuristicLab.Services.Optimization.Billing.Interfaces;9 using HeuristicLab.Services.Optimization.Billing;10 using System.Web.Security;11 9 12 namespace HeuristicLab.Services.Optimization.Web.Controllers 13 { 14 [Authorize(Roles = "Web User")] 15 public class OrderController : Controller 16 { 17 private IOptimizationBilling billing = new MockupOptimizationBilling(); 10 namespace HeuristicLab.Services.Optimization.Web.Controllers { 11 [Authorize(Roles = "Web User")] 12 public class OrderController : Controller { 13 private IOptimizationBilling billing = BillingServiceProvider.Instance; 18 14 19 20 15 // 16 // GET: /Order/ 21 17 22 public ActionResult Index() 23 { 24 return CreateOrder(new OrderModel()); //View(); 25 } 18 public ActionResult Index() { 19 return CreateOrder(new OrderModel()); //View(); 20 } 26 21 27 22 28 29 30 31 32 23 [HttpPost] 24 public ActionResult CreateOrder(OrderModel model) { 25 Session["order"] = model; 26 return AddProduct(); 27 } 33 28 34 35 36 29 public ActionResult AddProduct() { 30 return View("AddProduct", new ProductsModel() { Products = billing.GetProducts() }); 31 } 37 32 38 39 40 41 var prod = (from b in billing.GetProducts()42 where b.Id == product.ProductId43 44 order.ProductQuantities[prod.Id] = product.Quantity;45 46 33 [HttpPost] 34 public ActionResult AddProduct(ProductsModel product) { 35 var order = Session["order"] as OrderModel; 36 var prod = (from b in billing.GetProducts() 37 where b.ProductId == product.ProductId 38 select b).FirstOrDefault(); 39 order.ProductQuantities[prod.ProductId] = product.Quantity; 40 return AddProduct(); 41 } 47 42 48 49 50 51 var product = (from p in billing.GetProducts() where p.Id == key select p).FirstOrDefault();52 orderModel.Products[key] = product;53 54 55 43 public ActionResult SaveOrder() { 44 var orderModel = Session["order"] as OrderModel; 45 foreach (var key in orderModel.ProductQuantities.Keys) { 46 var product = (from p in billing.GetProducts() where p.ProductId == key select p).FirstOrDefault(); 47 orderModel.Products[key] = product; 48 } 49 return View(orderModel); 50 } 56 51 57 [HttpPost] 58 [ActionName("SaveOrder")] 59 public ActionResult SaveOrderPost() { 60 var orderModel = Session["order"] as OrderModel; 61 //TODO: Save order via back-end 62 var order = new Order() { 63 State = OrderState.Created, 64 User = new User() { Name = Membership.GetUser().UserName }, 65 BillingType = orderModel.BillingType, 66 BillingPeriod = orderModel.BillingPeriod 67 }; 68 69 var orderLines = new List<OrderLine>(); 70 var products = billing.GetProducts(); 71 foreach (var key in orderModel.ProductQuantities.Keys) { 72 var product = (from p in products where p.Id == key select p).FirstOrDefault(); 73 orderLines.Add(new OrderLine() { 74 Order = order, 75 Product = product, 76 ProductPrice = product.Price, 77 Quantity = orderModel.ProductQuantities[key] 78 }); 79 } 80 order.OrderLines = orderLines; 81 billing.SaveOrder(order); 82 return RedirectToAction("OrderSaved"); 83 } 52 [HttpPost] 53 [ActionName("SaveOrder")] 54 public ActionResult SaveOrderPost() { 55 var orderModel = Session["order"] as OrderModel; 56 //TODO: Save order via back-end 57 var order = new Order() { 58 State = OrderState.Created, 59 User = new User() { Name = Membership.GetUser().UserName }, 60 BillingType = orderModel.BillingType, 61 BillingPeriod = orderModel.BillingPeriod 62 }; 84 63 85 public ActionResult OrderSaved() { 86 return View(); 87 } 64 var orderLines = new List<OrderLine>(); 65 var products = billing.GetProducts(); 66 foreach (var key in orderModel.ProductQuantities.Keys) { 67 var product = (from p in products where p.ProductId == key select p).FirstOrDefault(); 68 orderLines.Add(new OrderLine() { 69 Order = order, 70 Product = product, 71 ProductPrice = product.Price, 72 Quantity = orderModel.ProductQuantities[key] 73 }); 74 } 75 order.OrderLines = orderLines; 76 billing.SaveOrder(order); 77 return RedirectToAction("OrderSaved"); 88 78 } 79 80 public ActionResult OrderSaved() { 81 return View(); 82 } 83 } 89 84 } -
branches/OaaS/HeuristicLab.Services.Optimization.Web/WebRole.cs
r9166 r9576 1 1 using System; 2 using System.Collections.Generic;3 using System.Linq;4 using Microsoft.WindowsAzure;5 2 using Microsoft.WindowsAzure.Diagnostics; 6 3 using Microsoft.WindowsAzure.ServiceRuntime; … … 23 20 } 24 21 } 25 catch (RoleEnvironmentException ex) {22 catch (RoleEnvironmentException) { 26 23 // diagnostics connection string not in configuration 27 24 // -> diagnostics disabled -
branches/OaaS/packages/repositories.config
r9508 r9576 3 3 <repository path="..\HeuristicLab.Services.Hive.Scaler\packages.config" /> 4 4 <repository path="..\HeuristicLab.Services.Hive.WebRole\packages.config" /> 5 <repository path="..\HeuristicLab.Services.Optimization.Billing\packages.config" /> 5 6 <repository path="..\HeuristicLab.Services.Optimization.Controller\packages.config" /> 6 7 <repository path="..\HeuristicLab.Services.Optimization.Web\packages.config" />
Note: See TracChangeset
for help on using the changeset viewer.