├── .gitattributes ├── .gitignore ├── .nuget ├── NuGet.Config ├── NuGet.targets └── nuget.exe ├── POS.Domain ├── Abstract │ ├── ICartApplicationService.cs │ ├── IEstablishmentRepository.cs │ ├── IGenericRepository.cs │ ├── IOrderProcessor.cs │ └── IProductRepository.cs ├── ApplicationService │ └── CartApplicationService.cs ├── Model │ ├── Cart.cs │ ├── Category.cs │ ├── Establishment.cs │ ├── Order.cs │ ├── ParentCategory.cs │ ├── Product.cs │ ├── Role.cs │ ├── ShippingDetails.cs │ └── User.cs ├── POS.Domain.csproj ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ └── Resources.resx ├── Validators │ └── TextLineValidatorAttribute.cs └── packages.config ├── POS.Infrastructure ├── EfDbContext.cs ├── EfDbContextInitializer.cs ├── EfEstablishmentRepository.cs ├── EfOrderRepository.cs ├── EfProductRepository.cs ├── GenericRepository.cs ├── Membership │ ├── CodeFirstMembershipProvider.cs │ ├── CodeFirstRoleProvider.cs │ ├── Crypto.cs │ └── WebSecurity.cs ├── POS.Infrastructure.csproj └── Properties │ └── AssemblyInfo.cs ├── POS.Tests ├── App.config ├── POS.Tests.csproj ├── Properties │ └── AssemblyInfo.cs ├── ServerReportControllerTest.cs └── WebUi.Controllers │ ├── AdminControllerTest.cs │ ├── CartControllerTest.cs │ ├── CustomExtensions │ └── ListExtensionTest.cs │ ├── EstablishmentManagerControllerTest.cs │ ├── HomeControllerTest.cs │ ├── MembershipControllerTest.cs │ └── ProductControllerTest.cs ├── POS.sln ├── POS ├── .gitattributes ├── .gitignore ├── ActionFilters │ └── CustomValidateAntiForgeryTokenAttribute.cs ├── AntiXssEncoder.cs ├── App_Data │ ├── pos.ldf │ └── pos.mdf ├── App_Start │ └── NinjectWebCommon.cs ├── Binders │ └── CartModelBinder.cs ├── Content │ ├── 2012.2.607 │ │ ├── Black │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Default │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Forest │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Hay │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Metro │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ └── sprite.png │ │ ├── Office2007 │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Office2010Black │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Office2010Blue │ │ │ ├── editor.png │ │ │ ├── gradient.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ └── sprite.png │ │ ├── Office2010Silver │ │ │ ├── editor.png │ │ │ ├── gradient.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ └── sprite.png │ │ ├── Outlook │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Simple │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Sitefinity │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Sunset │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Telerik │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Transparent │ │ │ ├── active.png │ │ │ ├── editor.png │ │ │ ├── gradient.png │ │ │ ├── group.png │ │ │ ├── hover.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── selected.png │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── toolbar.png │ │ │ └── widget.png │ │ ├── Vista │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ └── sprite.png │ │ ├── Web20 │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── WebBlue │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ ├── sprite.png │ │ │ ├── treeview-line.png │ │ │ ├── treeview-nodes-rtl.png │ │ │ └── treeview-nodes.png │ │ ├── Windows7 │ │ │ ├── editor.png │ │ │ ├── imagebrowser.png │ │ │ ├── loading.gif │ │ │ ├── slider-h.gif │ │ │ ├── slider-v.gif │ │ │ ├── sprite-vertical.png │ │ │ └── sprite.png │ │ ├── telerik.black.min.css │ │ ├── telerik.common.min.css │ │ ├── telerik.default.min.css │ │ ├── telerik.forest.min.css │ │ ├── telerik.hay.min.css │ │ ├── telerik.metro.min.css │ │ ├── telerik.office2007.min.css │ │ ├── telerik.office2010black.min.css │ │ ├── telerik.office2010blue.min.css │ │ ├── telerik.office2010silver.min.css │ │ ├── telerik.outlook.min.css │ │ ├── telerik.rtl.min.css │ │ ├── telerik.simple.min.css │ │ ├── telerik.sitefinity.min.css │ │ ├── telerik.sunset.min.css │ │ ├── telerik.telerik.min.css │ │ ├── telerik.transparent.min.css │ │ ├── telerik.vista.min.css │ │ ├── telerik.web20.min.css │ │ ├── telerik.webblue.min.css │ │ └── telerik.windows7.min.css │ ├── Admin.css │ ├── Site.css │ ├── gumby.css │ ├── img │ │ └── icon_nav_toggle.gif │ ├── imports.css │ ├── style.css │ ├── text.css │ └── ui.css ├── Controllers │ ├── AccountController.cs │ ├── AdminController.cs │ ├── CartController.cs │ ├── ControllerBase.cs │ ├── EstablishmentController.cs │ ├── HomeController.cs │ ├── MembershipController.cs │ ├── OrderDetailsController.cs │ ├── ProductController.cs │ └── ServerReportController.cs ├── CustomExtensions │ └── ListExtension.cs ├── Global.asax ├── Global.asax.cs ├── HtmlHelpers │ └── HtmlHelpers.cs ├── Models │ ├── CartIndexViewModel.cs │ ├── DeeperLookViewModel.cs │ ├── MasterViewModel.cs │ ├── Membership.cs │ └── ServerReportIndexViewModel.cs ├── NLog.config ├── NLog.xsd ├── POS.csproj ├── Properties │ └── AssemblyInfo.cs ├── Scripts │ ├── 2012.2.607 │ │ ├── jquery-1.7.1.min.js │ │ ├── jquery.validate.min.js │ │ ├── telerik.all.min.js │ │ ├── telerik.autocomplete.min.js │ │ ├── telerik.calendar.min.js │ │ ├── telerik.chart.min.js │ │ ├── telerik.combobox.min.js │ │ ├── telerik.common.min.js │ │ ├── telerik.datepicker.min.js │ │ ├── telerik.datetimepicker.min.js │ │ ├── telerik.draganddrop.min.js │ │ ├── telerik.editor.min.js │ │ ├── telerik.grid.editing.min.js │ │ ├── telerik.grid.filtering.min.js │ │ ├── telerik.grid.grouping.min.js │ │ ├── telerik.grid.min.js │ │ ├── telerik.grid.reordering.min.js │ │ ├── telerik.grid.resizing.min.js │ │ ├── telerik.imagebrowser.min.js │ │ ├── telerik.list.min.js │ │ ├── telerik.menu.min.js │ │ ├── telerik.panelbar.min.js │ │ ├── telerik.slider.min.js │ │ ├── telerik.splitter.min.js │ │ ├── telerik.tabstrip.min.js │ │ ├── telerik.textbox.min.js │ │ ├── telerik.timepicker.min.js │ │ ├── telerik.treeview.min.js │ │ ├── telerik.upload.min.js │ │ └── telerik.window.min.js │ ├── MicrosoftAjax.debug.js │ ├── MicrosoftAjax.js │ ├── MicrosoftMvcAjax.debug.js │ ├── MicrosoftMvcAjax.js │ ├── MicrosoftMvcValidation.debug.js │ ├── MicrosoftMvcValidation.js │ ├── gumbyScripts │ │ ├── libs │ │ │ ├── gumby.js │ │ │ ├── gumby.min.js │ │ │ ├── jquery-1.7.2.min.js │ │ │ └── modernizr-2.0.6.min.js │ │ ├── main.js │ │ └── plugins.js │ ├── jquery-1.7.2-vsdoc.js │ ├── jquery-1.7.2.js │ ├── jquery-1.7.2.min.js │ ├── jquery.unobtrusive-ajax.js │ ├── jquery.unobtrusive-ajax.min.js │ ├── jquery.validate-vsdoc.js │ ├── jquery.validate.js │ ├── jquery.validate.min.js │ ├── jquery.validate.unobtrusive.js │ ├── jquery.validate.unobtrusive.min.js │ ├── modernizr-2.5.3.js │ └── productTree.js ├── Settings.StyleCop ├── Views │ ├── Admin │ │ ├── Edit.cshtml │ │ ├── EditCategory.cshtml │ │ ├── EditParentCategory.cshtml │ │ ├── Index.cshtml │ │ ├── IndexCategory.cshtml │ │ └── IndexParentCategory.cshtml │ ├── Cart │ │ ├── Checkout.cshtml │ │ ├── Completed.cshtml │ │ ├── Index.cshtml │ │ └── Summary.cshtml │ ├── Establishment │ │ ├── Edit.cshtml │ │ └── Index.cshtml │ ├── Home │ │ ├── Establishment.cshtml │ │ ├── EstablishmentProductList.cshtml │ │ ├── Index.cshtml │ │ └── _EstablishmentSummary.cshtml │ ├── Membership │ │ ├── ChangePassword.cshtml │ │ ├── ChangePasswordSuccess.cshtml │ │ ├── LogOn.cshtml │ │ └── Register.cshtml │ ├── OrderDetails │ │ ├── Create.cshtml │ │ ├── DeeperLook.cshtml │ │ ├── DeeperLook2.cshtml │ │ ├── Delete.cshtml │ │ ├── Details.cshtml │ │ ├── Edit.cshtml │ │ ├── EstablishmentSalesReport.cshtml │ │ ├── FullOrders.cshtml │ │ ├── Index.cshtml │ │ └── Master.cshtml │ ├── Product │ │ ├── Categories.cshtml │ │ ├── CategoryList.cshtml │ │ ├── List.cshtml │ │ ├── ParentCategories.cshtml │ │ ├── ProductList.cshtml │ │ ├── _CategorySummary.cshtml │ │ ├── _ParentCategorySummary.cshtml │ │ └── _ProductSummary.cshtml │ ├── ServerReport │ │ └── Index.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ ├── _AdminLayout.cshtml │ │ ├── _Layout.cshtml │ │ └── _LogOnPartial.cshtml │ ├── Web.config │ └── _ViewStart.cshtml ├── Web.Debug.config ├── Web.Release.config ├── Web.config ├── logs │ ├── 2012-10-29.log │ └── 2012-11-01.log └── packages.config └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | [Dd]ebug/ 46 | [Rr]elease/ 47 | *_i.c 48 | *_p.c 49 | *.ilk 50 | *.meta 51 | *.obj 52 | *.pch 53 | *.pdb 54 | *.pgc 55 | *.pgd 56 | *.rsp 57 | *.sbr 58 | *.tlb 59 | *.tli 60 | *.tlh 61 | *.tmp 62 | *.vspscc 63 | .builds 64 | *.dotCover 65 | 66 | #NuGet 67 | packages/ 68 | 69 | # Visual C++ cache files 70 | ipch/ 71 | *.aps 72 | *.ncb 73 | *.opensdf 74 | *.sdf 75 | 76 | # Visual Studio profiler 77 | *.psess 78 | *.vsp 79 | 80 | # ReSharper is a .NET coding add-in 81 | _ReSharper* 82 | 83 | # Installshield output folder 84 | [Ee]xpress 85 | 86 | # DocProject is a documentation generator add-in 87 | DocProject/buildhelp/ 88 | DocProject/Help/*.HxT 89 | DocProject/Help/*.HxC 90 | DocProject/Help/*.hhc 91 | DocProject/Help/*.hhk 92 | DocProject/Help/*.hhp 93 | DocProject/Help/Html2 94 | DocProject/Help/html 95 | 96 | # Click-Once directory 97 | publish 98 | 99 | # Others 100 | [Bb]in 101 | [Oo]bj 102 | sql 103 | TestResults 104 | *.Cache 105 | ClientBin 106 | stylecop.* 107 | ~$* 108 | *.dbmdl 109 | Generated_Code #added for RIA/Silverlight projects 110 | 111 | # Backup & report files from converting an old project file to a newer 112 | # Visual Studio version. Backup files are not needed, because we have git ;-) 113 | _UpgradeReport_Files/ 114 | Backup*/ 115 | UpgradeLog*.XML 116 | 117 | 118 | 119 | ############ 120 | ## Windows 121 | ############ 122 | 123 | # Windows image file caches 124 | Thumbs.db 125 | 126 | # Folder config file 127 | Desktop.ini 128 | 129 | 130 | ############# 131 | ## Python 132 | ############# 133 | 134 | *.py[co] 135 | 136 | # Packages 137 | *.egg 138 | *.egg-info 139 | dist 140 | build 141 | eggs 142 | parts 143 | bin 144 | var 145 | sdist 146 | develop-eggs 147 | .installed.cfg 148 | 149 | # Installer logs 150 | pip-log.txt 151 | 152 | # Unit test / coverage reports 153 | .coverage 154 | .tox 155 | 156 | #Translations 157 | *.mo 158 | 159 | #Mr Developer 160 | .mr.developer.cfg 161 | 162 | # Mac crap 163 | .DS_Store 164 | -------------------------------------------------------------------------------- /.nuget/NuGet.Config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.nuget/nuget.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/.nuget/nuget.exe -------------------------------------------------------------------------------- /POS.Domain/Abstract/ICartApplicationService.cs: -------------------------------------------------------------------------------- 1 | namespace POS.Domain.Abstract 2 | { 3 | using System; 4 | 5 | using POS.Domain.Model; 6 | 7 | public interface ICartApplicationService 8 | { 9 | 10 | #region Public Methods and Operators 11 | 12 | void Process(Cart cart, ShippingDetails shippingDetails); 13 | 14 | #endregion 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /POS.Domain/Abstract/IEstablishmentRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using POS.Domain.Model; 4 | 5 | namespace POS.Domain.Abstract 6 | { 7 | public interface IEstablishmentRepository : IGenericRepository 8 | { 9 | #region Public Properties 10 | 11 | IQueryable Establishments { get; } 12 | 13 | #endregion 14 | 15 | #region Public Methods and Operators 16 | 17 | void DeleteEstablishment(Establishment establishment); 18 | 19 | void SaveEstablishment(Establishment establishment); 20 | 21 | #endregion 22 | } 23 | } -------------------------------------------------------------------------------- /POS.Domain/Abstract/IGenericRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Linq.Expressions; 4 | 5 | namespace POS.Domain.Abstract 6 | { 7 | public interface IGenericRepository : IDisposable where T : class 8 | { 9 | IQueryable GetAll(); 10 | IQueryable FindBy(Expression> predicate); 11 | void Add(T entity); 12 | void Delete(T entity); 13 | void Edit(T entity); 14 | void Save(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /POS.Domain/Abstract/IOrderProcessor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using POS.Domain.Model; 4 | 5 | namespace POS.Domain.Abstract 6 | { 7 | public interface IOrderProcessor : IGenericRepository 8 | { 9 | #region Public Properties 10 | 11 | IQueryable Orders { get; } 12 | 13 | #endregion 14 | 15 | #region Public Methods and Operators 16 | 17 | void DeleteOrder(Order order); 18 | 19 | void SaveOrder(Order order); 20 | 21 | void CreateOrder(Order order); 22 | 23 | #endregion 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /POS.Domain/Abstract/IProductRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using POS.Domain.Model; 3 | 4 | namespace POS.Domain.Abstract 5 | { 6 | #region 7 | 8 | using System.Linq; 9 | 10 | 11 | #endregion 12 | 13 | public interface IProductRepository : IDisposable 14 | { 15 | #region Public Properties 16 | 17 | IQueryable Categories { get; } 18 | 19 | IQueryable ParentCategories { get; } 20 | 21 | IQueryable Products { get; } 22 | 23 | #endregion 24 | 25 | #region Public Methods and Operators 26 | 27 | void DeleteCategory(Category category); 28 | 29 | void DeleteParentCategory(ParentCategory parentCategory); 30 | 31 | void DeleteProduct(Product product); 32 | 33 | void SaveCategory(Category category); 34 | 35 | void SaveParentCategory(ParentCategory parentCategory); 36 | 37 | void SaveProduct(Product product); 38 | 39 | #endregion 40 | } 41 | } -------------------------------------------------------------------------------- /POS.Domain/ApplicationService/CartApplicationService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using POS.Domain.Abstract; 5 | using POS.Domain.Model; 6 | 7 | 8 | 9 | namespace POS.Domain.ApplicationService 10 | { 11 | public class CartApplicationService : ICartApplicationService 12 | { 13 | private IOrderProcessor orderRepository; 14 | 15 | public CartApplicationService(IOrderProcessor processor) 16 | { 17 | orderRepository = processor; 18 | } 19 | 20 | public void Process(Cart cart, ShippingDetails shippingDetails) 21 | { 22 | var order = ProcessTheOrder(cart, shippingDetails); 23 | orderRepository.CreateOrder(order); 24 | cart.Clear(); 25 | } 26 | 27 | private Order ProcessTheOrder(Cart cart, ShippingDetails shippingDetails) 28 | { 29 | var order = new Order(); 30 | var orderDetailsList = new List(); 31 | 32 | try 33 | { 34 | foreach (var item in cart.Lines) 35 | { 36 | var orderDetail = new OrderDetail 37 | { 38 | OrderId = order.OrderId, 39 | ProductName = item.Product.Name, 40 | Quantity = item.Quantity, 41 | UnitPrice = item.Product.Price 42 | }; 43 | order.TotalCost += orderDetail.UnitPrice*orderDetail.Quantity; 44 | //TODO: Make Unit Test 45 | orderDetailsList.Add(orderDetail); 46 | } 47 | } 48 | catch (Exception) 49 | { 50 | // TODO: Add HttpException handling in place of Exception below 51 | throw new Exception("Erorr building list of oder details -> cart.Lines was probably null."); 52 | } 53 | 54 | var firstCartLineProduct = cart.Lines.FirstOrDefault(); 55 | int establishmentId = firstCartLineProduct.Product.EstablishmentId; 56 | 57 | order.OrderDetails = orderDetailsList; 58 | order.EstablishmentId = establishmentId; 59 | order.CustomerName = shippingDetails.Name; 60 | order.TimeProcessed = DateTime.Now; 61 | return order; 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /POS.Domain/Model/Category.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.Web.Mvc; 3 | using POS.Domain.Properties; 4 | using POS.Domain.Validators; 5 | 6 | namespace POS.Domain.Model 7 | { 8 | public class Category 9 | { 10 | /// 11 | /// Gets or sets the entity ID of a category 12 | /// 13 | /// 14 | /// An integer identifying the entity. 15 | /// 16 | [HiddenInput(DisplayValue = false)] 17 | public int CategoryId { get; set; } 18 | 19 | /// 20 | /// Gets or sets the name of the category 21 | /// 22 | /// 23 | /// A one-word string, only alpha-numeric characters and [.,_-;] are allowed 24 | /// 25 | [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "ProductCategoryRequired", 26 | ErrorMessageResourceType = typeof(Resources))] 27 | [StringLength(40, ErrorMessageResourceName = "ProductCategoryLengthError", 28 | ErrorMessageResourceType = typeof(Resources))] 29 | [TextLineInputValidatorAtribute] 30 | [Display(Name = "ProductCategoryLabelText", ResourceType = typeof(Resources))] 31 | public string Name { get; set; } 32 | 33 | /// 34 | /// Gets or sets the entity Id of the parent category 35 | /// 36 | public int ParentCategoryId { get; set; } 37 | 38 | /// 39 | /// Gets or sets the virtual parent category 40 | /// 41 | public virtual ParentCategory ParentCategory { get; set; } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /POS.Domain/Model/Establishment.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.Linq; 4 | using System.Web.Mvc; 5 | 6 | namespace POS.Domain.Model 7 | { 8 | public class Establishment 9 | { 10 | [HiddenInput(DisplayValue = false)] 11 | public int EstablishmentId { get; set; } 12 | 13 | public string Name { get; set; } 14 | 15 | /// 16 | /// Gets or sets the ImageData 17 | /// 18 | public byte[] ImageData { get; set; } 19 | 20 | /// 21 | /// Gets or sets the ImageMimeType 22 | /// 23 | [HiddenInput(DisplayValue = false)] 24 | [StringLength(100)] 25 | public string ImageMimeType { get; set; } 26 | 27 | /// 28 | /// Intend on having this return a list of Products sold by Establishment 29 | /// 30 | public virtual ICollection Products { get; set; } 31 | 32 | /// 33 | /// Returns a list of Parent Categories based on the variable Products 34 | /// 35 | /// 36 | public ICollection GetParentCategories() 37 | { 38 | var list = Products.Select(item => item.Category.ParentCategory).Distinct().ToList(); 39 | return list; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /POS.Domain/Model/Order.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace POS.Domain.Model 5 | { 6 | public class Order 7 | { 8 | public int OrderId { get; set; } 9 | 10 | public List OrderDetails { get; set; } 11 | 12 | public int EstablishmentId { get; set; } 13 | 14 | public virtual Establishment Establishment { get; set; } 15 | 16 | public decimal ServerTip { get; set; } 17 | 18 | public decimal TotalCost { get; set; } 19 | 20 | public Promo Promo { get; set; } 21 | 22 | public decimal SalesTax { get; set; } 23 | 24 | public DateTime TimeProcessed { get; set; } 25 | 26 | public string CustomerName { get; set; } 27 | 28 | public int ServerId { get; set; } 29 | 30 | public virtual User Server { get; set; } 31 | 32 | public Order() 33 | { 34 | TotalCost = 0; 35 | ServerId = 2; 36 | ServerTip = (decimal) 1.00; 37 | } 38 | } 39 | 40 | public class OrderDetail 41 | { 42 | public int OrderDetailId { get; set; } 43 | 44 | public int OrderId { get; set; } 45 | 46 | public int Quantity { get; set; } 47 | 48 | public string ProductName { get; set; } 49 | 50 | public decimal UnitPrice { get; set; } 51 | 52 | public int? LineItemPromoId { get; set; } 53 | 54 | public virtual LineItemPromo LineItemPromo { get; set; } 55 | 56 | public decimal UnitPriceAfterPromo 57 | { 58 | get { return UnitPriceAfterPromoCalculator(); } 59 | set 60 | { 61 | UnitPriceAfterPromoCalculator(); 62 | } 63 | } 64 | 65 | public virtual Order Order { get; set; } 66 | 67 | private decimal UnitPriceAfterPromoCalculator() 68 | { 69 | if (LineItemPromo != null) 70 | { 71 | return UnitPrice*(decimal) LineItemPromo.Promo.PercentOff; 72 | } 73 | else 74 | { 75 | return UnitPrice; 76 | } 77 | 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /POS.Domain/Model/ParentCategory.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.Web.Mvc; 3 | using POS.Domain.Properties; 4 | using POS.Domain.Validators; 5 | 6 | namespace POS.Domain.Model 7 | { 8 | public class ParentCategory 9 | { 10 | /// 11 | /// Gets or sets the entity ID of a category 12 | /// 13 | /// 14 | /// An integer identifying the entity. 15 | /// 16 | [HiddenInput(DisplayValue = false)] 17 | public int ParentCategoryId { get; set; } 18 | 19 | /// 20 | /// Gets or sets the name of the parent category 21 | /// 22 | /// 23 | /// A one-word string, only alpha-numeric characters and [.,_-;] are allowed 24 | /// 25 | [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "ProductParentCategoryRequired", 26 | ErrorMessageResourceType = typeof(Resources))] 27 | [StringLength(40, ErrorMessageResourceName = "ProductParentCategoryLengthError", 28 | ErrorMessageResourceType = typeof(Resources))] 29 | [TextLineInputValidatorAtribute] 30 | [Display(Name = "ProductParentCategoryLabelText", ResourceType = typeof(Resources))] 31 | public string Name { get; set; } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /POS.Domain/Model/Product.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.Web.Mvc; 3 | using POS.Domain.Properties; 4 | 5 | namespace POS.Domain.Model 6 | { 7 | public class Product 8 | { 9 | /// 10 | /// Gets or sets the entity ID of a product 11 | /// 12 | /// 13 | /// An integer identifying the entity. 14 | /// 15 | [HiddenInput(DisplayValue = false)] 16 | public int ProductId { get; set; } 17 | 18 | /// 19 | /// Gets or sets the name of the product 20 | /// 21 | /// 22 | /// A string. 23 | /// 24 | [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "ProductNameRequired", 25 | ErrorMessageResourceType = typeof (Resources))] 26 | [Display(Name = "ProductNameLebelText", ResourceType = typeof (Resources))] 27 | public string Name { get; set; } 28 | 29 | 30 | /// 31 | /// Gets or sets the description of the product 32 | /// 33 | /// 34 | /// A string. 35 | /// 36 | [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "ProductDescriptionRequired", 37 | ErrorMessageResourceType = typeof (Resources))] 38 | [DataType(DataType.MultilineText)] 39 | [Display(Name = "ProductDescriptionLabelText", ResourceType = typeof (Resources))] 40 | public string Description { get; set; } 41 | 42 | 43 | /// 44 | /// Gets or sets the price of the product 45 | /// 46 | /// 47 | /// A positive decimal. 48 | /// 49 | [Required(ErrorMessageResourceName = "ProductPriceRequired", ErrorMessageResourceType = typeof (Resources))] 50 | [Range(0.01, double.MaxValue, ErrorMessageResourceName = "ProductPriceMustBePositiveError", 51 | ErrorMessageResourceType = typeof (Resources))] 52 | [Display(Name = "ProductPriceLabelText", ResourceType = typeof (Resources))] 53 | public decimal Price { get; set; } 54 | 55 | 56 | /// 57 | /// Gets or sets the entity Id of the category 58 | /// 59 | public int CategoryId { get; set; } 60 | 61 | /// 62 | /// Gets or sets the virtual category 63 | /// 64 | public virtual Category Category { get; set; } 65 | 66 | /// 67 | /// Gets or sets the ImageData 68 | /// 69 | public byte[] ImageData { get; set; } 70 | 71 | /// 72 | /// Gets or sets the ImageMimeType 73 | /// 74 | [HiddenInput(DisplayValue = false)] 75 | [StringLength(100)] 76 | [RegularExpression(@"[^\n]+", ErrorMessage = "ImageMimeType is invalid")] // Needs to not allow newline characters 77 | public string ImageMimeType { get; set; } 78 | 79 | /// 80 | /// Gets or sets the entity Id of the Establishment at which the Product is sold 81 | /// 82 | public int EstablishmentId { get; set; } 83 | 84 | /// 85 | /// Gets or sets the virtual Establishment 86 | /// 87 | public virtual Establishment Establishment { get; set; } 88 | } 89 | } -------------------------------------------------------------------------------- /POS.Domain/Model/Role.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.ComponentModel.DataAnnotations; 6 | 7 | public class Role 8 | { 9 | [Key] 10 | public virtual Guid RoleId { get; set; } 11 | 12 | [Required] 13 | public virtual string RoleName { get; set; } 14 | 15 | public virtual string Description { get; set; } 16 | 17 | public virtual ICollection Users { get; set; } 18 | } -------------------------------------------------------------------------------- /POS.Domain/Model/ShippingDetails.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace POS.Domain.Model 4 | { 5 | public class ShippingDetails 6 | { 7 | //todo: Update validation requirements 8 | [Required(ErrorMessage = "Please enter a name")] 9 | public string Name { get; set; } 10 | 11 | [Required(ErrorMessage = "Please enter the first address line")] 12 | public string Line1 { get; set; } 13 | public string Line2 { get; set; } 14 | public string Line3 { get; set; } 15 | 16 | [Required(ErrorMessage = "Please enter a city name")] 17 | public string City { get; set; } 18 | 19 | [Required(ErrorMessage = "Please enter a state name")] 20 | public string State { get; set; } 21 | 22 | public string Zip { get; set; } 23 | 24 | [Required(ErrorMessage = "Please enter a country name")] 25 | public string Country { get; set; } 26 | 27 | public bool GiftWrap { get; set; } 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /POS.Domain/Model/User.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.ComponentModel.DataAnnotations; 6 | 7 | public class User 8 | { 9 | [Key] 10 | public virtual Guid UserId { get; set; } 11 | 12 | [Required] 13 | public virtual String Username { get; set; } 14 | 15 | public virtual String Email { get; set; } 16 | 17 | [Required, DataType(DataType.Password)] 18 | public virtual String Password { get; set; } 19 | 20 | public virtual String FirstName { get; set; } 21 | public virtual String LastName { get; set; } 22 | 23 | [DataType(DataType.MultilineText)] 24 | public virtual String Comment { get; set; } 25 | 26 | public virtual Boolean IsApproved { get; set; } 27 | public virtual int PasswordFailuresSinceLastSuccess { get; set; } 28 | public virtual DateTime? LastPasswordFailureDate { get; set; } 29 | public virtual DateTime? LastActivityDate { get; set; } 30 | public virtual DateTime? LastLockoutDate { get; set; } 31 | public virtual DateTime? LastLoginDate { get; set; } 32 | public virtual String ConfirmationToken { get; set; } 33 | public virtual DateTime? CreateDate { get; set; } 34 | public virtual Boolean IsLockedOut { get; set; } 35 | public virtual DateTime? LastPasswordChangedDate { get; set; } 36 | public virtual String PasswordVerificationToken { get; set; } 37 | public virtual DateTime? PasswordVerificationTokenExpirationDate { get; set; } 38 | 39 | public virtual ICollection Roles { get; set; } 40 | } -------------------------------------------------------------------------------- /POS.Domain/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("POS.Domain")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("POS.Domain")] 13 | [assembly: AssemblyCopyright("Copyright © 2012")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("3d2ab954-0d90-4b76-8201-1ff75b771302")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /POS.Domain/Validators/TextLineValidatorAttribute.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | 3 | // 4 | 5 | // TODO: Update copyright text. 6 | 7 | // 8 | 9 | // ----------------------------------------------------------------------- 10 | 11 | using System.Collections.Generic; 12 | using System.ComponentModel.DataAnnotations; 13 | using System.Web.Mvc; 14 | using POS.Domain.Properties; 15 | 16 | namespace POS.Domain.Validators 17 | { 18 | #region 19 | 20 | 21 | 22 | #endregion 23 | 24 | /// 25 | /// Only alpha-numeric characters and [.,_-;] are allowed. 26 | /// 27 | public class TextLineInputValidatorAtribute : RegularExpressionAttribute, IClientValidatable 28 | { 29 | #region Constructors and Destructors 30 | 31 | public TextLineInputValidatorAtribute() 32 | : base(Resources.TextLineInputValidatorRegEx) 33 | { 34 | ErrorMessage = Resources.InvalidInputCharacter; 35 | } 36 | 37 | #endregion 38 | 39 | #region Public Methods and Operators 40 | 41 | public IEnumerable GetClientValidationRules( 42 | ModelMetadata metadata, ControllerContext context) 43 | { 44 | var rule = new ModelClientValidationRule 45 | { 46 | ErrorMessage = Resources.InvalidInputCharacter, 47 | ValidationType = "textlineinput" 48 | }; 49 | 50 | rule.ValidationParameters.Add("pattern", Resources.TextLineInputValidatorRegEx); 51 | 52 | return new List {rule}; 53 | } 54 | 55 | #endregion 56 | } 57 | } -------------------------------------------------------------------------------- /POS.Domain/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /POS.Infrastructure/EfDbContext.cs: -------------------------------------------------------------------------------- 1 | using System.Data.Entity; 2 | using POS.Domain.Model; 3 | 4 | 5 | namespace POS.Infrastructure 6 | { 7 | #region 8 | 9 | 10 | 11 | #endregion 12 | 13 | public class EfDbContext : DbContext 14 | { 15 | #region Public Properties 16 | 17 | public DbSet Categories { get; set; } 18 | 19 | public DbSet ParentCategories { get; set; } 20 | 21 | public DbSet Products { get; set; } 22 | 23 | public DbSet Establishments { get; set; } 24 | 25 | public DbSet Orders { get; set; } 26 | 27 | public DbSet OrderDetails { get; set; } 28 | 29 | public DbSet Promos { get; set; } 30 | 31 | public DbSet LineItemPromos { get; set; } 32 | 33 | public DbSet Users { get; set; } 34 | 35 | public DbSet Roles { get; set; } 36 | 37 | #endregion 38 | } 39 | } -------------------------------------------------------------------------------- /POS.Infrastructure/EfEstablishmentRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Data; 3 | using System.Linq; 4 | using POS.Domain.Abstract; 5 | using POS.Domain.Model; 6 | 7 | namespace POS.Infrastructure 8 | { 9 | public class EfEstablishmentRepository : GenericRepository, IEstablishmentRepository 10 | { 11 | #region Fields 12 | 13 | private readonly EfDbContext context = new EfDbContext(); 14 | 15 | #endregion 16 | 17 | #region Public Properties 18 | 19 | public IQueryable Establishments 20 | { 21 | get { return context.Establishments; } 22 | } 23 | 24 | #endregion 25 | 26 | private bool _disposed; 27 | 28 | #region IEstablishmentRepository Members 29 | 30 | public void DeleteEstablishment(Establishment establishment) 31 | { 32 | context.Establishments.Remove(establishment); 33 | context.SaveChanges(); 34 | } 35 | 36 | public void SaveEstablishment(Establishment establishment) 37 | { 38 | if (establishment.EstablishmentId == 0) 39 | { 40 | context.Establishments.Add(establishment); 41 | } 42 | else 43 | { 44 | context.Entry(establishment).State = EntityState.Modified; 45 | } 46 | 47 | context.SaveChanges(); 48 | } 49 | 50 | public void Dispose() 51 | { 52 | Dispose(true); 53 | GC.SuppressFinalize(this); 54 | } 55 | 56 | #endregion 57 | 58 | protected virtual void Dispose(bool disposing) 59 | { 60 | if (!_disposed) 61 | { 62 | if (disposing) 63 | { 64 | context.Dispose(); 65 | } 66 | } 67 | _disposed = true; 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /POS.Infrastructure/EfOrderRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Data; 3 | using System.Linq; 4 | using POS.Domain.Abstract; 5 | using POS.Domain.Model; 6 | 7 | namespace POS.Infrastructure 8 | { 9 | public class EfOrderRepository : GenericRepository, IOrderProcessor 10 | { 11 | #region Fields 12 | 13 | private readonly EfDbContext context = new EfDbContext(); 14 | 15 | #endregion 16 | 17 | #region Public Properties 18 | 19 | public IQueryable Orders 20 | { 21 | get { return context.Orders; } 22 | } 23 | 24 | #endregion 25 | 26 | private bool _disposed; 27 | 28 | #region IOrderProcessor Members 29 | 30 | public void DeleteOrder(Order order) 31 | { 32 | context.Orders.Remove(order); 33 | context.SaveChanges(); 34 | } 35 | 36 | public void SaveOrder(Order order) 37 | { 38 | if (order.OrderId == 0) 39 | { 40 | context.Orders.Add(order); 41 | } 42 | else 43 | { 44 | context.Entry(order).State = EntityState.Modified; 45 | } 46 | 47 | context.SaveChanges(); 48 | } 49 | 50 | public void CreateOrder(Order order) 51 | { 52 | if (order.OrderId == 0) 53 | { 54 | foreach (var item in order.OrderDetails) 55 | { 56 | context.OrderDetails.Add(item); 57 | } 58 | context.Orders.Add(order); 59 | } 60 | else 61 | { 62 | foreach (var item in order.OrderDetails) 63 | { 64 | context.Entry(item).State = EntityState.Modified; 65 | } 66 | context.Entry(order).State = EntityState.Modified; 67 | } 68 | 69 | context.SaveChanges(); 70 | } 71 | 72 | #endregion 73 | 74 | public void Dispose() 75 | { 76 | Dispose(true); 77 | GC.SuppressFinalize(this); 78 | } 79 | 80 | protected virtual void Dispose(bool disposing) 81 | { 82 | if (!_disposed) 83 | { 84 | if (disposing) 85 | { 86 | context.Dispose(); 87 | } 88 | } 89 | _disposed = true; 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /POS.Infrastructure/EfProductRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Data; 3 | using System.Linq; 4 | using POS.Domain.Abstract; 5 | using POS.Domain.Model; 6 | 7 | namespace POS.Infrastructure 8 | { 9 | #region 10 | 11 | 12 | 13 | #endregion 14 | 15 | public class EfProductRepository : IProductRepository 16 | { 17 | #region Fields 18 | 19 | private readonly EfDbContext context = new EfDbContext(); 20 | 21 | #endregion 22 | 23 | #region Public Properties 24 | 25 | public IQueryable Categories 26 | { 27 | get { return context.Categories; } 28 | } 29 | 30 | public IQueryable ParentCategories 31 | { 32 | get { return context.ParentCategories; } 33 | } 34 | 35 | public IQueryable Products 36 | { 37 | get { return context.Products; } 38 | } 39 | 40 | #endregion 41 | 42 | #region Public Methods and Operators 43 | 44 | private bool _disposed; 45 | 46 | public void DeleteCategory(Category category) 47 | { 48 | context.Categories.Remove(category); 49 | context.SaveChanges(); 50 | } 51 | 52 | public void DeleteParentCategory(ParentCategory parentCategory) 53 | { 54 | context.ParentCategories.Remove(parentCategory); 55 | context.SaveChanges(); 56 | } 57 | 58 | public void DeleteProduct(Product product) 59 | { 60 | context.Products.Remove(product); 61 | context.SaveChanges(); 62 | } 63 | 64 | public void SaveCategory(Category category) 65 | { 66 | if (category.CategoryId == 0) 67 | { 68 | context.Categories.Add(category); 69 | } 70 | else 71 | { 72 | context.Entry(category).State = EntityState.Modified; 73 | } 74 | 75 | context.SaveChanges(); 76 | } 77 | 78 | public void SaveParentCategory(ParentCategory parentCategory) 79 | { 80 | if (parentCategory.ParentCategoryId == 0) 81 | { 82 | context.ParentCategories.Add(parentCategory); 83 | } 84 | else 85 | { 86 | context.Entry(parentCategory).State = EntityState.Modified; 87 | } 88 | 89 | context.SaveChanges(); 90 | } 91 | 92 | public void SaveProduct(Product product) 93 | { 94 | if (product.ProductId == 0) 95 | { 96 | context.Products.Add(product); 97 | } 98 | else 99 | { 100 | context.Entry(product).State = EntityState.Modified; 101 | } 102 | 103 | context.SaveChanges(); 104 | } 105 | 106 | public void Dispose() 107 | { 108 | Dispose(true); 109 | GC.SuppressFinalize(this); 110 | } 111 | 112 | protected virtual void Dispose(bool disposing) 113 | { 114 | if (!_disposed) 115 | { 116 | if (disposing) 117 | { 118 | context.Dispose(); 119 | } 120 | } 121 | _disposed = true; 122 | } 123 | 124 | #endregion 125 | } 126 | } -------------------------------------------------------------------------------- /POS.Infrastructure/GenericRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Data.Entity; 3 | using System.Linq; 4 | using POS.Domain.Abstract; 5 | 6 | namespace POS.Infrastructure 7 | { 8 | public abstract class GenericRepository : IGenericRepository 9 | where T : class 10 | where C : DbContext, new() 11 | { 12 | 13 | private C _entities = new C(); 14 | public C Context 15 | { 16 | 17 | get { return _entities; } 18 | set { _entities = value; } 19 | } 20 | 21 | public virtual IQueryable GetAll() 22 | { 23 | 24 | IQueryable query = _entities.Set(); 25 | return query; 26 | } 27 | 28 | public IQueryable FindBy(System.Linq.Expressions.Expression> predicate) 29 | { 30 | 31 | IQueryable query = _entities.Set().Where(predicate); 32 | return query; 33 | } 34 | 35 | public virtual void Add(T entity) 36 | { 37 | _entities.Set().Add(entity); 38 | } 39 | 40 | public virtual void Delete(T entity) 41 | { 42 | _entities.Set().Remove(entity); 43 | } 44 | 45 | public virtual void Edit(T entity) 46 | { 47 | _entities.Entry(entity).State = System.Data.EntityState.Modified; 48 | } 49 | 50 | public virtual void Save() 51 | { 52 | _entities.SaveChanges(); 53 | } 54 | 55 | private bool _disposed; 56 | 57 | public void Dispose() 58 | { 59 | Dispose(true); 60 | GC.SuppressFinalize(this); 61 | } 62 | 63 | protected virtual void Dispose(bool disposing) 64 | { 65 | if (!_disposed) 66 | { 67 | if (disposing) 68 | { 69 | Context.Dispose(); 70 | } 71 | } 72 | _disposed = true; 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /POS.Infrastructure/POS.Infrastructure.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 8.0.30703 7 | 2.0 8 | {C4F72FC1-0914-4CC6-93E9-A4168D81DCAE} 9 | Library 10 | Properties 11 | POS.Infrastructure 12 | POS.Infrastructure 13 | v4.0 14 | 512 15 | 16 | 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | pdbonly 27 | true 28 | bin\Release\ 29 | TRACE 30 | prompt 31 | 4 32 | 33 | 34 | 35 | ..\POS\bin\EntityFramework.dll 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | {5AE451AA-73A6-4C36-8D1C-F78A03EB93D9} 65 | POS.Domain 66 | 67 | 68 | 69 | 70 | 77 | -------------------------------------------------------------------------------- /POS.Infrastructure/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("POS.Infrastructure")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("POS.Infrastructure")] 13 | [assembly: AssemblyCopyright("Copyright © 2012")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("1ca6c8ca-8f0e-4aad-861d-35bc0f081976")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /POS.Tests/App.config: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /POS.Tests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("POS.Tests")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("POS.Tests")] 13 | [assembly: AssemblyCopyright("Copyright © 2012")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("d8b67e2f-02c0-4515-ba7e-2bc8b82fa48f")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /POS.Tests/WebUi.Controllers/HomeControllerTest.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using Moq; 4 | using POS.Domain.Abstract; 5 | using POS.Domain.Model; 6 | 7 | namespace POS.Tests.WebUi.Controllers 8 | { 9 | using System.Web.Mvc; 10 | 11 | using Microsoft.VisualStudio.TestTools.UnitTesting; 12 | 13 | using POS.Controllers; 14 | 15 | /// 16 | ///This is a test class for HomeController and is intended 17 | ///to contain all HomeController Unit Tests 18 | /// 19 | [TestClass] 20 | public class HomeControllerTest 21 | { 22 | #region Fields 23 | 24 | private Mock _mockRepository; 25 | 26 | #endregion 27 | 28 | /// 29 | /// Initializes a fresh _mockRepository before each test is run 30 | /// 31 | [TestInitialize] 32 | public void MyTestInitialize() 33 | { 34 | var mock = new Mock(); 35 | mock.Setup(m => m.Establishments).Returns( 36 | new[] 37 | { 38 | new Establishment {EstablishmentId = 1, Name = "E1"}, 39 | new Establishment {EstablishmentId = 2, Name = "E2"}, 40 | new Establishment {EstablishmentId = 3, Name = "E3"}, 41 | new Establishment {EstablishmentId = 4, Name = "E4"}, 42 | new Establishment {EstablishmentId = 5, Name = "E4",} 43 | }.AsQueryable()); 44 | _mockRepository = mock; 45 | } 46 | 47 | /// 48 | /// Tests that the returned IEnumerable of Establishments contains all establishments from the repository 49 | /// First checks that there is the proper number of establishments, then checks that the establishment names are in their expected locations 50 | /// 51 | [TestMethod] 52 | public void IndexReturnsEntireEstablishmentList() 53 | { 54 | // Arrange - create a controller 55 | var controller = new EstablishmentController(_mockRepository.Object); 56 | 57 | // Action 58 | Establishment[] result = ((IEnumerable)controller.Index().ViewData.Model).ToArray(); 59 | 60 | // Assert 61 | Assert.AreEqual(result.Length, 5); 62 | Assert.AreEqual("E1", result[0].Name); 63 | Assert.AreEqual("E2", result[1].Name); 64 | Assert.AreEqual("E3", result[2].Name); 65 | Assert.AreEqual("E4", result[3].Name); 66 | Assert.AreEqual("E4", result[4].Name); 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /POS.Tests/WebUi.Controllers/MembershipControllerTest.cs: -------------------------------------------------------------------------------- 1 | /* 2 | namespace POS.Tests.WebUi.Controllers 3 | { 4 | using System.Web.Security; 5 | 6 | using Moq; 7 | 8 | using POS.Controllers; 9 | 10 | using Microsoft.VisualStudio.TestTools.UnitTesting; 11 | 12 | using POS.Infrastructure.Membership; 13 | using POS.Models; 14 | 15 | using System.Web.Mvc; 16 | 17 | using POS.Infrastructure; 18 | 19 | /// 20 | ///This is a test class for MembershipControllerTest and is intended 21 | ///to contain all MembershipControllerTest Unit Tests 22 | /// 23 | [TestClass] 24 | public class MembershipControllerTest 25 | { 26 | 27 | 28 | private Mock _mockRepository; 29 | 30 | /// 31 | /// Initializes a fresh _mockRepository before each test is run 32 | /// 33 | [TestInitialize] 34 | public void MyTestInitialize() 35 | { 36 | var mock = new Mock(); 37 | _mockRepository = mock; 38 | } 39 | 40 | /// 41 | ///A test for LogOn 42 | /// 43 | [TestMethod] 44 | public void LogOnTest() 45 | { 46 | MembershipController target = new MembershipController(_mockRepository.Object); 47 | LogOnModel model = new LogOnModel() { UserName = "Admin", Password = "pas5word", RememberMe = false }; 48 | string returnUrl = string.Empty; // TODO: Initialize to an appropriate value 49 | 50 | // act 51 | var result = (ViewResult) target.LogOn(model, returnUrl); 52 | 53 | // assert 54 | Assert.IsNotNull(result.ViewData.ModelState); 55 | } 56 | } 57 | } 58 | */ 59 | -------------------------------------------------------------------------------- /POS.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "POS", "POS\POS.csproj", "{DF8DA591-23F3-4DA7-B610-38419EFBFC73}" 5 | EndProject 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "POS.Tests", "POS.Tests\POS.Tests.csproj", "{CB144186-1200-4411-8CFC-BC18EA626E22}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "POS.Domain", "POS.Domain\POS.Domain.csproj", "{5AE451AA-73A6-4C36-8D1C-F78A03EB93D9}" 9 | EndProject 10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{A8A500E1-C3FD-4DFB-BD9F-4B1807CD41E8}" 11 | ProjectSection(SolutionItems) = preProject 12 | .nuget\NuGet.Config = .nuget\NuGet.Config 13 | .nuget\nuget.exe = .nuget\nuget.exe 14 | .nuget\NuGet.targets = .nuget\NuGet.targets 15 | EndProjectSection 16 | EndProject 17 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "POS.Infrastructure", "POS.Infrastructure\POS.Infrastructure.csproj", "{C4F72FC1-0914-4CC6-93E9-A4168D81DCAE}" 18 | EndProject 19 | Global 20 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 21 | Debug|Any CPU = Debug|Any CPU 22 | Release|Any CPU = Release|Any CPU 23 | EndGlobalSection 24 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 25 | {DF8DA591-23F3-4DA7-B610-38419EFBFC73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 26 | {DF8DA591-23F3-4DA7-B610-38419EFBFC73}.Debug|Any CPU.Build.0 = Debug|Any CPU 27 | {DF8DA591-23F3-4DA7-B610-38419EFBFC73}.Release|Any CPU.ActiveCfg = Release|Any CPU 28 | {DF8DA591-23F3-4DA7-B610-38419EFBFC73}.Release|Any CPU.Build.0 = Release|Any CPU 29 | {CB144186-1200-4411-8CFC-BC18EA626E22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 30 | {CB144186-1200-4411-8CFC-BC18EA626E22}.Debug|Any CPU.Build.0 = Debug|Any CPU 31 | {CB144186-1200-4411-8CFC-BC18EA626E22}.Release|Any CPU.ActiveCfg = Release|Any CPU 32 | {CB144186-1200-4411-8CFC-BC18EA626E22}.Release|Any CPU.Build.0 = Release|Any CPU 33 | {5AE451AA-73A6-4C36-8D1C-F78A03EB93D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 34 | {5AE451AA-73A6-4C36-8D1C-F78A03EB93D9}.Debug|Any CPU.Build.0 = Debug|Any CPU 35 | {5AE451AA-73A6-4C36-8D1C-F78A03EB93D9}.Release|Any CPU.ActiveCfg = Release|Any CPU 36 | {5AE451AA-73A6-4C36-8D1C-F78A03EB93D9}.Release|Any CPU.Build.0 = Release|Any CPU 37 | {C4F72FC1-0914-4CC6-93E9-A4168D81DCAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 38 | {C4F72FC1-0914-4CC6-93E9-A4168D81DCAE}.Debug|Any CPU.Build.0 = Debug|Any CPU 39 | {C4F72FC1-0914-4CC6-93E9-A4168D81DCAE}.Release|Any CPU.ActiveCfg = Release|Any CPU 40 | {C4F72FC1-0914-4CC6-93E9-A4168D81DCAE}.Release|Any CPU.Build.0 = Release|Any CPU 41 | EndGlobalSection 42 | GlobalSection(SolutionProperties) = preSolution 43 | HideSolutionNode = FALSE 44 | EndGlobalSection 45 | EndGlobal 46 | -------------------------------------------------------------------------------- /POS/.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /POS/.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | [Dd]ebug/ 46 | [Rr]elease/ 47 | *_i.c 48 | *_p.c 49 | *.ilk 50 | *.meta 51 | *.obj 52 | *.pch 53 | *.pdb 54 | *.pgc 55 | *.pgd 56 | *.rsp 57 | *.sbr 58 | *.tlb 59 | *.tli 60 | *.tlh 61 | *.tmp 62 | *.vspscc 63 | .builds 64 | *.dotCover 65 | 66 | ## TODO: If you have NuGet Package Restore enabled, uncomment this 67 | packages/ 68 | 69 | # Visual C++ cache files 70 | ipch/ 71 | *.aps 72 | *.ncb 73 | *.opensdf 74 | *.sdf 75 | 76 | # Visual Studio profiler 77 | *.psess 78 | *.vsp 79 | 80 | # ReSharper is a .NET coding add-in 81 | _ReSharper* 82 | 83 | # Installshield output folder 84 | [Ee]xpress 85 | 86 | # DocProject is a documentation generator add-in 87 | DocProject/buildhelp/ 88 | DocProject/Help/*.HxT 89 | DocProject/Help/*.HxC 90 | DocProject/Help/*.hhc 91 | DocProject/Help/*.hhk 92 | DocProject/Help/*.hhp 93 | DocProject/Help/Html2 94 | DocProject/Help/html 95 | 96 | # Click-Once directory 97 | publish 98 | 99 | # Others 100 | [Bb]in 101 | [Oo]bj 102 | sql 103 | TestResults 104 | *.Cache 105 | ClientBin 106 | stylecop.* 107 | ~$* 108 | *.dbmdl 109 | Generated_Code #added for RIA/Silverlight projects 110 | 111 | # Backup & report files from converting an old project file to a newer 112 | # Visual Studio version. Backup files are not needed, because we have git ;-) 113 | _UpgradeReport_Files/ 114 | Backup*/ 115 | UpgradeLog*.XML 116 | 117 | 118 | 119 | ############ 120 | ## Windows 121 | ############ 122 | 123 | # Windows image file caches 124 | Thumbs.db 125 | 126 | # Folder config file 127 | Desktop.ini 128 | 129 | 130 | ############# 131 | ## Python 132 | ############# 133 | 134 | *.py[co] 135 | 136 | # Packages 137 | *.egg 138 | *.egg-info 139 | dist 140 | build 141 | eggs 142 | parts 143 | bin 144 | var 145 | sdist 146 | develop-eggs 147 | .installed.cfg 148 | 149 | # Installer logs 150 | pip-log.txt 151 | 152 | # Unit test / coverage reports 153 | .coverage 154 | .tox 155 | 156 | #Translations 157 | *.mo 158 | 159 | #Mr Developer 160 | .mr.developer.cfg 161 | 162 | # Mac crap 163 | .DS_Store 164 | 165 | ############ 166 | ## Just for POS 167 | ############ 168 | pos/pos/logs/ -------------------------------------------------------------------------------- /POS/ActionFilters/CustomValidateAntiForgeryTokenAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace POS.ActionFilters 4 | { 5 | using System.Web.Mvc; 6 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] 7 | public sealed class CustomValidateAntiForgeryTokenAttribute : FilterAttribute, IAuthorizationFilter 8 | { 9 | /// 10 | /// The ValidateAntiForgeryTokenAttribute. 11 | /// 12 | private ValidateAntiForgeryTokenAttribute Validator { get; set; } 13 | 14 | /// 15 | /// The Accept Verbs Attribute. 16 | /// 17 | private AcceptVerbsAttribute AcceptVerbsAttribute { get; set; } 18 | 19 | /// 20 | /// Gets the salt. 21 | /// 22 | public string Salt { get; private set; } 23 | 24 | /// 25 | /// Gets the verbs. 26 | /// 27 | public HttpVerbs Verbs { get; private set; } 28 | 29 | /// 30 | /// Initializes a new instance of the class. 31 | /// 32 | /// The verbs. 33 | public CustomValidateAntiForgeryTokenAttribute(HttpVerbs verbs) 34 | : this(verbs, null) 35 | { 36 | } 37 | 38 | /// 39 | /// Initializes a new instance of the class. 40 | /// 41 | /// The verbs. 42 | /// The salt. 43 | public CustomValidateAntiForgeryTokenAttribute(HttpVerbs verbs, string salt) 44 | { 45 | Verbs = verbs; 46 | Salt = salt; 47 | 48 | AcceptVerbsAttribute = new AcceptVerbsAttribute(Verbs); 49 | Validator = new ValidateAntiForgeryTokenAttribute 50 | { 51 | Salt = Salt 52 | }; 53 | } 54 | 55 | /// 56 | /// Called when authorization is required. 57 | /// 58 | /// The filter context. 59 | public void OnAuthorization(AuthorizationContext filterContext) 60 | { 61 | var httpMethodOverride = filterContext.HttpContext.Request.GetHttpMethodOverride(); 62 | 63 | var found = false; 64 | foreach (var verb in AcceptVerbsAttribute.Verbs) 65 | { 66 | if (verb.Equals(httpMethodOverride, StringComparison.OrdinalIgnoreCase)) 67 | { 68 | found = true; 69 | } 70 | } 71 | 72 | if (found && !filterContext.RequestContext.RouteData.Values["action"].ToString().StartsWith("Json")) 73 | { 74 | Validator.OnAuthorization(filterContext); 75 | } 76 | } 77 | } 78 | } -------------------------------------------------------------------------------- /POS/App_Data/pos.ldf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/App_Data/pos.ldf -------------------------------------------------------------------------------- /POS/App_Data/pos.mdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/App_Data/pos.mdf -------------------------------------------------------------------------------- /POS/App_Start/NinjectWebCommon.cs: -------------------------------------------------------------------------------- 1 | using POS.Domain.ApplicationService; 2 | using POS.Infrastructure; 3 | 4 | [assembly: WebActivator.PreApplicationStartMethod(typeof(POS.App_Start.NinjectWebCommon), "Start")] 5 | [assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(POS.App_Start.NinjectWebCommon), "Stop")] 6 | 7 | namespace POS.App_Start 8 | { 9 | using System; 10 | using System.Web; 11 | 12 | using Microsoft.Web.Infrastructure.DynamicModuleHelper; 13 | 14 | using Domain.Abstract; 15 | 16 | using Ninject; 17 | using Ninject.Web.Common; 18 | 19 | using POS.Controllers; 20 | using POS.Infrastructure.Membership; 21 | 22 | public static class NinjectWebCommon 23 | { 24 | private static readonly Bootstrapper Bootstrapper = new Bootstrapper(); 25 | 26 | /// 27 | /// Starts the application 28 | /// 29 | public static void Start() 30 | { 31 | DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); 32 | DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); 33 | Bootstrapper.Initialize(CreateKernel); 34 | } 35 | 36 | /// 37 | /// Stops the application. 38 | /// 39 | public static void Stop() 40 | { 41 | Bootstrapper.ShutDown(); 42 | } 43 | 44 | /// 45 | /// Creates the kernel that will manage your application. 46 | /// 47 | /// The created kernel. 48 | private static IKernel CreateKernel() 49 | { 50 | var kernel = new StandardKernel(); 51 | kernel.Bind>().ToMethod(ctx => () => new Bootstrapper().Kernel); 52 | kernel.Bind().To(); 53 | 54 | RegisterServices(kernel); 55 | return kernel; 56 | } 57 | 58 | /// 59 | /// Load your modules or register your services here! 60 | /// 61 | /// The kernel. 62 | private static void RegisterServices(IKernel kernel) 63 | { 64 | kernel.Bind().To(); 65 | kernel.Bind().To(); 66 | kernel.Bind().To(); 67 | kernel.Bind().To(); 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /POS/Binders/CartModelBinder.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | using POS.Domain.Model; 3 | 4 | namespace POS.Binders 5 | { 6 | public class CartModelBinder : IModelBinder 7 | { 8 | private const string SessionKey = "Cart"; 9 | 10 | #region IModelBinder Members 11 | 12 | public object BindModel(ControllerContext controllerContext, 13 | ModelBindingContext bindingContext) 14 | { 15 | // get the Cart from the session 16 | 17 | // ReSharper disable PossibleNullReferenceException 18 | var cart = (Cart) controllerContext.HttpContext.Session[SessionKey]; 19 | // ReSharper restore PossibleNullReferenceException 20 | 21 | if (cart == null) 22 | { 23 | cart = new Cart(); 24 | controllerContext.HttpContext.Session[SessionKey] = cart; 25 | } 26 | return cart; 27 | } 28 | 29 | #endregion 30 | } 31 | } -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Black/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Black/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Black/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Black/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Black/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Black/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Black/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Black/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Black/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Black/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Black/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Black/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Black/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Black/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Black/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Black/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Black/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Black/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Black/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Black/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Default/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Default/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Default/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Default/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Default/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Default/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Default/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Default/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Default/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Default/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Default/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Default/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Default/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Default/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Default/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Default/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Default/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Default/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Default/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Default/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Forest/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Forest/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Forest/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Forest/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Forest/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Forest/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Forest/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Forest/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Forest/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Forest/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Forest/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Forest/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Forest/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Forest/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Forest/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Forest/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Forest/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Forest/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Forest/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Forest/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Hay/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Hay/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Hay/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Hay/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Hay/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Hay/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Hay/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Hay/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Hay/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Hay/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Hay/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Hay/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Hay/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Hay/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Hay/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Hay/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Hay/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Hay/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Hay/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Hay/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Metro/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Metro/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Metro/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Metro/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Metro/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Metro/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Metro/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Metro/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Metro/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Metro/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Metro/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Metro/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2007/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2007/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2007/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2007/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2007/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2007/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2007/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2007/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2007/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2007/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2007/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2007/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2007/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2007/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2007/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2007/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2007/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2007/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2007/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2007/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Black/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Black/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Black/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Black/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Black/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Black/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Black/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Black/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Black/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Black/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Black/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Black/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Black/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Black/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Black/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Black/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Black/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Black/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Black/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Black/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Blue/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Blue/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Blue/gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Blue/gradient.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Blue/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Blue/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Blue/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Blue/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Blue/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Blue/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Blue/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Blue/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Blue/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Blue/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Blue/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Blue/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Silver/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Silver/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Silver/gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Silver/gradient.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Silver/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Silver/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Silver/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Silver/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Silver/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Silver/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Silver/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Silver/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Silver/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Silver/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Office2010Silver/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Office2010Silver/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Outlook/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Outlook/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Outlook/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Outlook/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Outlook/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Outlook/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Outlook/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Outlook/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Outlook/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Outlook/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Outlook/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Outlook/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Outlook/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Outlook/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Outlook/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Outlook/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Outlook/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Outlook/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Outlook/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Outlook/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Simple/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Simple/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Simple/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Simple/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Simple/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Simple/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Simple/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Simple/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Simple/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Simple/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Simple/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Simple/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Simple/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Simple/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Simple/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Simple/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Simple/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Simple/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sitefinity/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sitefinity/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sitefinity/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sitefinity/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sitefinity/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sitefinity/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sitefinity/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sitefinity/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sitefinity/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sitefinity/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sitefinity/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sitefinity/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sitefinity/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sitefinity/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sitefinity/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sitefinity/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sitefinity/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sitefinity/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sitefinity/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sitefinity/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sunset/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sunset/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sunset/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sunset/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sunset/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sunset/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sunset/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sunset/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sunset/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sunset/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sunset/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sunset/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sunset/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sunset/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sunset/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sunset/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sunset/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sunset/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Sunset/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Sunset/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Telerik/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Telerik/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Telerik/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Telerik/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Telerik/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Telerik/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Telerik/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Telerik/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Telerik/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Telerik/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Telerik/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Telerik/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Telerik/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Telerik/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Telerik/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Telerik/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Telerik/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Telerik/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Telerik/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Telerik/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/active.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/gradient.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/group.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/hover.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/selected.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/toolbar.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Transparent/widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Transparent/widget.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Vista/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Vista/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Vista/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Vista/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Vista/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Vista/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Vista/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Vista/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Vista/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Vista/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Vista/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Vista/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Vista/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Vista/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Web20/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Web20/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Web20/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Web20/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Web20/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Web20/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Web20/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Web20/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Web20/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Web20/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Web20/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Web20/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Web20/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Web20/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Web20/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Web20/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Web20/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Web20/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Web20/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Web20/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/WebBlue/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/WebBlue/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/WebBlue/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/WebBlue/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/WebBlue/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/WebBlue/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/WebBlue/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/WebBlue/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/WebBlue/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/WebBlue/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/WebBlue/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/WebBlue/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/WebBlue/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/WebBlue/sprite.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/WebBlue/treeview-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/WebBlue/treeview-line.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/WebBlue/treeview-nodes-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/WebBlue/treeview-nodes-rtl.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/WebBlue/treeview-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/WebBlue/treeview-nodes.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Windows7/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Windows7/editor.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Windows7/imagebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Windows7/imagebrowser.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Windows7/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Windows7/loading.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Windows7/slider-h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Windows7/slider-h.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Windows7/slider-v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Windows7/slider-v.gif -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Windows7/sprite-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Windows7/sprite-vertical.png -------------------------------------------------------------------------------- /POS/Content/2012.2.607/Windows7/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/2012.2.607/Windows7/sprite.png -------------------------------------------------------------------------------- /POS/Content/Admin.css: -------------------------------------------------------------------------------- 1 | BODY, TD { font-family: Segoe UI, Verdana } 2 | H1 { padding: .5em; padding-top: 0; font-weight: bold; 3 | font-size: 1.5em; border-bottom: 2px solid gray; } 4 | DIV#content { padding: .9em; } 5 | TABLE.Grid TD, TABLE.Grid TH { border-bottom: 1px dotted gray; text-align:left; } 6 | TABLE.Grid { border-collapse: collapse; width:100%; } 7 | TABLE.Grid TH.NumericCol, Table.Grid TD.NumericCol { 8 | text-align: right; padding-right: 1em; } 9 | FORM {margin-bottom: 0px; } 10 | DIV.Message { background: gray; color:White; padding: .2em; margin-top:.25em; } 11 | .field-validation-error { color: red; display: block; } 12 | .field-validation-valid { display: none; } 13 | .input-validation-error { border: 1px solid red; background-color: #ffeeee; } 14 | .validation-summary-errors { font-weight: bold; color: red; } 15 | .validation-summary-valid { display: none; } 16 | 17 | .editor-field { margin-bottom: .8em; } 18 | .editor-label { font-weight: bold; } 19 | .editor-label:after { content: ":" } 20 | .text-box { width: 25em; } 21 | .multi-line { height: 5em; font-family: Segoe UI, Verdana; } -------------------------------------------------------------------------------- /POS/Content/img/icon_nav_toggle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecnalyr/POS/f26a838e58b007e8524574b41b23e00b63b005be/POS/Content/img/icon_nav_toggle.gif -------------------------------------------------------------------------------- /POS/Content/imports.css: -------------------------------------------------------------------------------- 1 | @import url('gumby.css'); 2 | @import url('ui.css'); 3 | @import url('style.css'); 4 | @import url('text.css'); -------------------------------------------------------------------------------- /POS/Content/style.css: -------------------------------------------------------------------------------- 1 | /*======================================================================= 2 | 3 | ❤❤❤ Gumby by Digital Surgeons. ❤❤❤ 4 | 5 | *** This is where you should keep all of your design specific styles *** 6 | 7 | ========================================================================*/ 8 | 9 | 10 | -------------------------------------------------------------------------------- /POS/Content/text.css: -------------------------------------------------------------------------------- 1 | /*======================================================================= 2 | 3 | ❤❤❤ Gumby by Digital Surgeons. ❤❤❤ 4 | 5 | *** This is where you should keep all of your TEXT styles *** 6 | 7 | ========================================================================*/ 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | /* ==|== media queries ====================================================== 37 | PLACEHOLDER Media Queries for Responsive Design. 38 | These override the primary ('mobile first') styles 39 | Modify as content requires. 40 | ========================================================================== */ 41 | 42 | @media only screen and (min-width: 480px) { 43 | /* Style adjustments for viewports 480px and over go here */ 44 | 45 | } 46 | 47 | @media only screen and (min-width: 768px) { 48 | /* Style adjustments for viewports 768px and over go here */ 49 | 50 | } -------------------------------------------------------------------------------- /POS/Controllers/CartController.cs: -------------------------------------------------------------------------------- 1 | namespace POS.Controllers 2 | { 3 | #region 4 | 5 | using System.Linq; 6 | using System.Web.Mvc; 7 | 8 | using POS.Domain.Abstract; 9 | using POS.Domain.ApplicationService; 10 | using POS.Domain.Model; 11 | using POS.Domain.Properties; 12 | using POS.Models; 13 | 14 | #endregion 15 | 16 | public class CartController : Controller 17 | { 18 | #region Fields 19 | 20 | //private readonly CartApplicationService _cartApplicationService; 21 | 22 | private readonly ICartApplicationService _cartApplicationService; 23 | 24 | private readonly IProductRepository _repository; 25 | 26 | #endregion 27 | 28 | #region Constructors and Destructors 29 | 30 | public CartController(IProductRepository productRepository, /*CartApplicationService cartApplicationService*/ ICartApplicationService cartApplicationService) 31 | { 32 | this._repository = productRepository; 33 | this._cartApplicationService = cartApplicationService; 34 | } 35 | 36 | #endregion 37 | 38 | #region Public Methods and Operators 39 | 40 | public RedirectToRouteResult AddToCart(Cart cart, int productId, string returnUrl) 41 | { 42 | Product product = this._repository.Products.FirstOrDefault(p => p.ProductId == productId); 43 | 44 | if (product != null) 45 | { 46 | cart.AddItem(product, 1); 47 | } 48 | 49 | return RedirectToAction("Index", new { returnUrl }); 50 | } 51 | 52 | public ViewResult Checkout() 53 | { 54 | return View(new ShippingDetails()); 55 | } 56 | 57 | [HttpPost] 58 | public ViewResult Checkout(Cart cart, ShippingDetails shippingDetails) 59 | { 60 | if (!cart.Lines.Any()) 61 | { 62 | ModelState.AddModelError(string.Empty, Resources.EmptyCartError); 63 | } 64 | 65 | if (ModelState.IsValid) 66 | { 67 | _cartApplicationService.Process(cart, shippingDetails); 68 | return View("Completed"); 69 | } 70 | 71 | return View(shippingDetails); 72 | } 73 | 74 | public ViewResult Index(Cart cart, string returnUrl) 75 | { 76 | return View(new CartIndexViewModel { Cart = cart, ReturnUrl = returnUrl }); 77 | } 78 | 79 | public RedirectToRouteResult RemoveFromCart(Cart cart, int productId, string returnUrl) 80 | { 81 | Product product = this._repository.Products.FirstOrDefault(p => p.ProductId == productId); 82 | 83 | if (product != null) 84 | { 85 | cart.RemoveLine(product); 86 | } 87 | 88 | return RedirectToAction("Index", new { returnUrl }); 89 | } 90 | 91 | public ViewResult Summary(Cart cart) 92 | { 93 | return View(cart); 94 | } 95 | 96 | #endregion 97 | } 98 | } -------------------------------------------------------------------------------- /POS/Controllers/ControllerBase.cs: -------------------------------------------------------------------------------- 1 | namespace POS.Controllers 2 | { 3 | #region 4 | 5 | using System; 6 | using System.Reflection; 7 | using System.Web.Mvc; 8 | 9 | using NLog; 10 | 11 | using POS.ActionFilters; 12 | 13 | #endregion 14 | 15 | [CustomValidateAntiForgeryToken(HttpVerbs.Post)] 16 | public class ControllerBase : Controller 17 | { 18 | #region Properties 19 | 20 | protected Logger Logger 21 | { 22 | get 23 | { 24 | Type declaringType = MethodBase.GetCurrentMethod().DeclaringType; 25 | if (declaringType != null) 26 | { 27 | return LogManager.GetLogger(declaringType.ToString()); 28 | } 29 | 30 | return null; 31 | } 32 | } 33 | 34 | #endregion 35 | } 36 | } -------------------------------------------------------------------------------- /POS/Controllers/EstablishmentController.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Web; 3 | using System.Web.Mvc; 4 | using POS.Domain.Abstract; 5 | using POS.Domain.Model; 6 | 7 | namespace POS.Controllers 8 | { 9 | public class EstablishmentController : ControllerBase 10 | { 11 | #region Fields 12 | 13 | private readonly IEstablishmentRepository _establishmentRepository; 14 | 15 | #endregion 16 | 17 | #region Constructors and Destructors 18 | 19 | public EstablishmentController(IEstablishmentRepository establishmentRepo) 20 | { 21 | _establishmentRepository = establishmentRepo; 22 | } 23 | 24 | #endregion 25 | 26 | public ViewResult Index() 27 | { 28 | return View(_establishmentRepository.Establishments); 29 | } 30 | 31 | public ViewResult Edit(int id) 32 | { 33 | Establishment establishment = 34 | _establishmentRepository.Establishments.FirstOrDefault(p => p.EstablishmentId == id); 35 | return View(establishment); 36 | } 37 | 38 | [HttpPost] 39 | public ActionResult Edit(Establishment establishment, HttpPostedFileBase image) 40 | { 41 | if (ModelState.IsValid) 42 | { 43 | if (image != null) 44 | { 45 | establishment.ImageMimeType = image.ContentType; 46 | establishment.ImageData = new byte[image.ContentLength]; 47 | image.InputStream.Read(establishment.ImageData, 0, image.ContentLength); 48 | } 49 | 50 | _establishmentRepository.SaveEstablishment(establishment); 51 | // TODO: _establishmentRepository.Add(establishment); 52 | TempData["message"] = string.Format("Establishment {0} has been saved", establishment.Name); 53 | return RedirectToAction("Index"); 54 | } 55 | else 56 | { 57 | // there is something wrong with the data values 58 | return View(establishment); 59 | } 60 | } 61 | 62 | [HttpPost] 63 | public ActionResult Delete(int id) 64 | { 65 | Establishment establishment = _establishmentRepository.Establishments.FirstOrDefault(p => p.EstablishmentId == id); 66 | if (establishment != null) 67 | { 68 | _establishmentRepository.DeleteEstablishment(establishment); 69 | TempData["message"] = string.Format("Establishment {0} was deleted", establishment.Name); 70 | } 71 | 72 | return RedirectToAction("Index"); 73 | } 74 | 75 | public ViewResult Create() 76 | { 77 | return View("Edit", new Establishment()); 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /POS/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | namespace POS.Controllers 2 | { 3 | #region 4 | 5 | using System.Collections.Generic; 6 | using System.Diagnostics; 7 | using System.Linq; 8 | using System.Web.Mvc; 9 | 10 | using POS.Domain.Abstract; 11 | using POS.Domain.Model; 12 | 13 | #endregion 14 | 15 | public class HomeController : ControllerBase 16 | { 17 | #region Fields 18 | 19 | private readonly IEstablishmentRepository establishmentRepository; 20 | 21 | #endregion 22 | 23 | #region Constructors and Destructors 24 | 25 | public HomeController(IEstablishmentRepository establishmentRepo) 26 | { 27 | this.establishmentRepository = establishmentRepo; 28 | } 29 | 30 | #endregion 31 | 32 | #region Public Methods and Operators 33 | 34 | public ActionResult Establishment(int id) 35 | { 36 | Establishment establishment = 37 | this.establishmentRepository.Establishments.FirstOrDefault(p => p.EstablishmentId == id); 38 | return View(establishment); 39 | } 40 | 41 | public ActionResult EstablishmentProductList(int id) 42 | { 43 | Establishment establishment = 44 | this.establishmentRepository.Establishments.FirstOrDefault(p => p.EstablishmentId == id); 45 | if (establishment != null) 46 | { 47 | Debug.Write(establishment.Name + "<-- that was the establishment name. "); 48 | ICollection products = establishment.Products; 49 | foreach (Product item in establishment.Products) 50 | { 51 | Debug.Write(item.Name); 52 | } 53 | 54 | return View(products); 55 | } 56 | else 57 | { 58 | // throw an error? 59 | return View(); 60 | } 61 | } 62 | 63 | public ActionResult Index() 64 | { 65 | Logger.Debug("Checking that nLogger is working from Index"); 66 | return View(this.establishmentRepository.Establishments); 67 | } 68 | 69 | public PartialViewResult _EstablishmentSummary(int id) 70 | { 71 | Establishment establishment = 72 | this.establishmentRepository.Establishments.FirstOrDefault(p => p.EstablishmentId == id); 73 | return PartialView(establishment); 74 | } 75 | 76 | #endregion 77 | } 78 | } -------------------------------------------------------------------------------- /POS/Controllers/MembershipController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | 7 | namespace POS.Controllers 8 | { 9 | using System.Web.Security; 10 | 11 | using POS.Infrastructure; 12 | using POS.Models; 13 | 14 | public class MembershipController : Controller 15 | { 16 | public MembershipController(EfDbContext efDbContext) 17 | { 18 | efDbContext = new EfDbContext(); 19 | } 20 | 21 | /* WebSecurity.Register("Admin", "pas5word", "demo@demo.com", true, "Demo", "Demo"); 22 | Roles.CreateRole("Admin"); 23 | Roles.AddUserToRole("Demo", "Admin");*/ 24 | public ActionResult LogOn() 25 | { 26 | return View(); 27 | } 28 | 29 | 30 | [HttpPost] 31 | public ActionResult LogOn(LogOnModel model, string returnUrl) 32 | { 33 | if (ModelState.IsValid) 34 | { 35 | if (Membership.ValidateUser(model.UserName, model.Password)) 36 | { 37 | FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); 38 | if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") 39 | && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) 40 | { 41 | return Redirect(returnUrl); 42 | } 43 | else 44 | { 45 | return RedirectToAction("Index", "Home"); 46 | } 47 | } 48 | else 49 | { 50 | ModelState.AddModelError("", "The user name or password provided is incorrect."); 51 | } 52 | } 53 | 54 | // If we got this far, something failed, redisplay form 55 | return View(model); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /POS/Controllers/ProductController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using System.Web.Mvc; 4 | using POS.Domain.Abstract; 5 | using POS.Domain.Model; 6 | 7 | namespace POS.Controllers 8 | { 9 | #region 10 | 11 | 12 | 13 | #endregion 14 | 15 | public class ProductController : ControllerBase 16 | { 17 | #region Fields 18 | 19 | private readonly IProductRepository _productRepository; 20 | 21 | #endregion 22 | 23 | #region Constructors and Destructors 24 | 25 | public ProductController(IProductRepository productRepo) 26 | { 27 | _productRepository = productRepo; 28 | } 29 | 30 | #endregion 31 | 32 | #region Public Methods and Operators 33 | 34 | public ActionResult Categories() 35 | { 36 | return PartialView(_productRepository.Categories); 37 | } 38 | 39 | public ActionResult CategoryList(int parentCategory) 40 | { 41 | IEnumerable categoryList = _productRepository.Categories.Where(p => p.ParentCategoryId == parentCategory); 42 | return PartialView("CategoryList", categoryList); 43 | } 44 | 45 | public FileContentResult GetImage(int productid) 46 | { 47 | Product product = _productRepository.Products.FirstOrDefault(p => p.ProductId == productid); 48 | if (product != null) 49 | { 50 | return File(product.ImageData, product.ImageMimeType); 51 | } 52 | else 53 | { 54 | return null; 55 | } 56 | } 57 | 58 | public ViewResult List() 59 | { 60 | // lists everything (categories + products) for demo purposes 61 | return View(_productRepository.Categories); 62 | } 63 | 64 | public ActionResult ParentCategories() 65 | { 66 | return View(_productRepository.ParentCategories); 67 | } 68 | 69 | public ActionResult ProductList(int category) 70 | { 71 | IEnumerable productList = _productRepository.Products.Where(p => p.CategoryId == category); 72 | return PartialView("ProductList", productList); 73 | } 74 | 75 | #endregion 76 | } 77 | } -------------------------------------------------------------------------------- /POS/Controllers/ServerReportController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | 7 | namespace POS.Controllers 8 | { 9 | using POS.Domain.Abstract; 10 | using POS.Models; 11 | 12 | public class ServerReportController : ControllerBase 13 | { 14 | #region Fields 15 | 16 | private readonly IOrderProcessor _orderProcessor; 17 | 18 | #endregion 19 | 20 | #region Constructors and Destructors 21 | 22 | public ServerReportController(IOrderProcessor orderProcessor) 23 | { 24 | _orderProcessor = orderProcessor; 25 | } 26 | 27 | #endregion 28 | 29 | public ViewResult Index() 30 | { 31 | var orders = _orderProcessor.Orders.ToList(); // TODO: Change to use generic repository 32 | var tipTotal = orders.Sum(order => order.ServerTip); 33 | 34 | var model = new ServerReportIndexViewModel { TotalTips = tipTotal }; 35 | return View(model); 36 | } 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /POS/CustomExtensions/ListExtension.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | namespace POS.CustomExtensions 6 | { 7 | public static class ListExtension 8 | { 9 | //TODO: Make a unit test 10 | /// 11 | /// Computes the median of a sequence of System.Decimal values 12 | /// 13 | /// A sequence of System.Decimal values to calculate the median of. 14 | /// The median of the sequence of the values 15 | public static decimal Median(this IEnumerable source) 16 | { 17 | // Create a copy of the input, and sort the copy 18 | decimal[] temp = source.ToArray(); 19 | Array.Sort(temp); 20 | 21 | int count = temp.Length; 22 | if (count == 0) 23 | { 24 | throw new InvalidOperationException("Empty collection"); 25 | } 26 | if (count % 2 == 0) 27 | { 28 | // count is even, average two middle elements 29 | decimal a = temp[count / 2 - 1]; 30 | decimal b = temp[count / 2]; 31 | return (a + b) / 2m; 32 | } 33 | // count is odd, return the middle element 34 | return temp[count / 2]; 35 | } 36 | 37 | //TODO: Make a unit test 38 | /// 39 | /// Computes the median of a sequence of System.Double values 40 | /// 41 | /// A sequence of System.Double values to calculate the median of. 42 | /// 43 | /// The median of the sequence of the values 44 | public static decimal Median(this IEnumerable source) 45 | { 46 | // Create a copy of the input, and sort the copy 47 | double[] temp = source.ToArray(); 48 | Array.Sort(temp); 49 | 50 | int count = temp.Length; 51 | if (count == 0) 52 | { 53 | throw new InvalidOperationException("Empty collection"); 54 | } 55 | if (count % 2 == 0) 56 | { 57 | // count is even, average two middle elements 58 | decimal a = (decimal) temp[count / 2 - 1]; 59 | decimal b = (decimal) temp[count / 2]; 60 | return (a + b) / 2m; 61 | } 62 | // count is odd, return the middle element 63 | return (decimal) temp[count / 2]; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /POS/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="POS.MvcApplication" Language="C#" %> 2 | -------------------------------------------------------------------------------- /POS/Global.asax.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Data.Entity; 3 | using System.Web; 4 | using System.Web.Mvc; 5 | using System.Web.Routing; 6 | using NLog; 7 | using POS.Binders; 8 | using POS.Infrastructure; 9 | using POS.Domain.Model; 10 | 11 | namespace POS 12 | { 13 | // Note: For instructions on enabling IIS6 or IIS7 classic mode, 14 | // visit http://go.microsoft.com/?LinkId=9394801 15 | 16 | public class MvcApplication : System.Web.HttpApplication 17 | { 18 | public static void RegisterGlobalFilters(GlobalFilterCollection filters) 19 | { 20 | filters.Add(new HandleErrorAttribute()); 21 | } 22 | 23 | protected void Application_Error() 24 | { 25 | var ex = Context.Server.GetLastError(); 26 | 27 | var logger = LogManager.GetLogger(GetType().ToString()); 28 | 29 | if (ex is HttpException && ((HttpException)ex).GetHttpCode() == 404) 30 | { 31 | if (logger.IsWarnEnabled) 32 | { 33 | var message = 34 | String.Format( 35 | "Unhandled exception trying to access " + Context.Request.Url + 36 | ": {0} | Stack Trace: {1}", 37 | ex.Message, 38 | ex.StackTrace); 39 | 40 | logger.Warn(message, ex); 41 | } 42 | } 43 | else 44 | { 45 | if (logger.IsFatalEnabled) 46 | { 47 | var message = 48 | String.Format( 49 | "Unhandled exception trying to access " + Context.Request.Url + 50 | ": {0} | Stack Trace: {1}", 51 | ex.Message, 52 | ex.StackTrace); 53 | 54 | logger.Fatal(message, ex); 55 | } 56 | } 57 | } 58 | 59 | public static void RegisterRoutes(RouteCollection routes) 60 | { 61 | routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 62 | 63 | routes.MapRoute( 64 | "Default", // Route name 65 | "{controller}/{action}/{id}", // URL with parameters 66 | new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 67 | ); 68 | 69 | } 70 | 71 | protected void Application_Start() 72 | { 73 | 74 | Database.SetInitializer(new EfDbContextInitializer()); // Resets database 75 | 76 | AreaRegistration.RegisterAllAreas(); 77 | 78 | RegisterGlobalFilters(GlobalFilters.Filters); 79 | RegisterRoutes(RouteTable.Routes); 80 | 81 | ModelBinders.Binders.Add(typeof(Cart), new CartModelBinder()); 82 | } 83 | } 84 | } -------------------------------------------------------------------------------- /POS/HtmlHelpers/HtmlHelpers.cs: -------------------------------------------------------------------------------- 1 | namespace POS.HtmlHelpers 2 | { 3 | public static class HtmlHelpers 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /POS/Models/CartIndexViewModel.cs: -------------------------------------------------------------------------------- 1 | using POS.Domain.Model; 2 | 3 | namespace POS.Models 4 | { 5 | public class CartIndexViewModel 6 | { 7 | public Cart Cart { get; set; } 8 | 9 | public string ReturnUrl { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /POS/Models/DeeperLookViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace POS.Models 7 | { 8 | public class DeeperLookViewModel 9 | { 10 | public int DeeperLookViewModelId { get; set; } 11 | 12 | public string Stat { get; set; } 13 | 14 | public float Average { get; set; } 15 | 16 | public float Median { get; set; } 17 | 18 | public DeeperLookViewModel() 19 | { 20 | Stat = "Stat"; 21 | Average = 0; 22 | Median = 0; 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /POS/Models/MasterViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace POS.Models 4 | { 5 | public class MasterViewModel 6 | { 7 | public int OrderId { get; set; } 8 | 9 | public string ProductName { get; set; } 10 | 11 | public decimal Price { get; set; } 12 | 13 | public int ProductQuantity { get; set; } 14 | 15 | public decimal TotalLineCost { get; set; } 16 | 17 | public string EstablishmentName { get; set; } 18 | 19 | public decimal TotalCostOfOrder { get; set; } 20 | 21 | public DateTime TimeProcessed { get; set; } 22 | 23 | public string CustomerName { get; set; } 24 | 25 | public string LineItemPromo { get; set; } 26 | 27 | public decimal TotalLineCostAfterPromo { get; set; } 28 | } 29 | } -------------------------------------------------------------------------------- /POS/Models/Membership.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace POS.Models 4 | { 5 | using System.Web.Mvc; 6 | 7 | public class ChangePasswordModel 8 | { 9 | [Required] 10 | [DataType(DataType.Password)] 11 | [Display(Name = "Current password")] 12 | public string OldPassword { get; set; } 13 | 14 | [Required] 15 | [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 16 | [DataType(DataType.Password)] 17 | [Display(Name = "New password")] 18 | public string NewPassword { get; set; } 19 | 20 | [DataType(DataType.Password)] 21 | [Display(Name = "Confirm new password")] 22 | [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] 23 | public string ConfirmPassword { get; set; } 24 | } 25 | 26 | public class LogOnModel 27 | { 28 | [Required] 29 | [Display(Name = "User name")] 30 | public string UserName { get; set; } 31 | 32 | [Required] 33 | [DataType(DataType.Password)] 34 | [Display(Name = "Password")] 35 | public string Password { get; set; } 36 | 37 | [Display(Name = "Remember me?")] 38 | public bool RememberMe { get; set; } 39 | } 40 | 41 | public class RegisterModel 42 | { 43 | [Required] 44 | [Display(Name = "User name")] 45 | public string UserName { get; set; } 46 | 47 | [Required] 48 | [DataType(DataType.EmailAddress)] 49 | [Display(Name = "Email address")] 50 | public string Email { get; set; } 51 | 52 | [Required] 53 | [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 54 | [DataType(DataType.Password)] 55 | [Display(Name = "Password")] 56 | public string Password { get; set; } 57 | 58 | [DataType(DataType.Password)] 59 | [Display(Name = "Confirm password")] 60 | [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 61 | public string ConfirmPassword { get; set; } 62 | } 63 | } -------------------------------------------------------------------------------- /POS/Models/ServerReportIndexViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace POS.Models 7 | { 8 | public class ServerReportIndexViewModel 9 | { 10 | public decimal TotalTips { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /POS/NLog.config: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 11 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /POS/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("POS")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("POS")] 13 | [assembly: AssemblyCopyright("Copyright © 2012")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("45062942-06c3-416d-8387-5e8efb48ada0")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /POS/Scripts/2012.2.607/telerik.grid.reordering.min.js: -------------------------------------------------------------------------------- 1 | (function(a){var b=a.telerik;b.scripts.push("telerik.grid.reordering.js");b.reordering={};b.reordering.initialize=function(c){c.$reorderDropCue=a('
');var d=c.$header.children("th").length-1;var f=function(j,i){var l=a.inArray(i,c.columns),m=a.grep(c.columns,function(n){return !n.hidden}),h=a.inArray(i,m),g=a.inArray(c.columns[j],m);c.columns.splice(l,1);c.columns.splice(j,0,i);e(c.$columns(),l,j);e(c.$tbody.parent().find("> colgroup > col:not(.t-group-col,.t-hierarchy-col)"),h,g);e(c.$headerWrap.find("table").find("> colgroup > col:not(.t-group-col,.t-hierarchy-col)"),h,g);var k=c.$footer.find("table");e(k.find("> colgroup > col:not(.t-group-col,.t-hierarchy-col)"),h,g);e(k.find("> tbody > tr.t-footer-template > td:not(.t-group-cell,.t-hierarchy-cell)").add(c.$footer.find("tr.t-footer-template > td:not(.t-group-cell,.t-hierarchy-cell)")),l,j);a.each(c.$tbody.children(),function(){e(a(this).find(" > td:not(.t-group-cell, .t-hierarchy-cell, .t-detail-cell)"),l,j)})};c.reorderColumn=f;function e(j,k,i){var h=j.eq(k);var g=j.eq(i);h[k>i?"insertBefore":"insertAfter"](g)}new b.draggable({owner:c.$header[0],selector:".t-header:not(.t-group-cell,.t-hierarchy-cell)",scope:c.element.id+"-reodering",cue:function(h){var g=c.columnFromTitle(h.$draggable.text());return b.dragCue(g?g.title:"")},destroy:function(g){g.$cue.remove()}});new b.droppable({owner:c.$header[0],scope:c.element.id+"-reodering",selector:".t-header:not(.t-group-cell,.t-hierarchy-cell)",over:function(g){var h=a.trim(g.$draggable.text())==a.trim(g.$droppable.text());b.dragCueStatus(g.$cue,h?"t-denied":"t-add");var i=0;a("> .t-grid-top, > .t-grouping-header",c.element).each(function(){i+=a(this).outerHeight()});if(!h){c.$reorderDropCue.css({height:g.$droppable.outerHeight(),top:i,left:function(){return g.$droppable.position().left+((g.$droppable.index()>g.$draggable.index())?g.$droppable.outerWidth():0)}}).appendTo(c.element)}},out:function(g){c.$reorderDropCue.remove();b.dragCueStatus(g.$cue,"t-denied")},drop:function(h){c.$reorderDropCue.remove();if(h.$cue.find(".t-drag-status").is(".t-add")){var g=c.columnFromTitle(a.trim(h.$draggable.text()));var i=c.$columns().index(h.$droppable.closest(".t-header"));b.trigger(c.element,"columnReorder",{column:g,oldIndex:a.inArray(g,c.columns),newIndex:i});f(i,g);b.trigger(c.element,"repaint")}}})}})(jQuery); -------------------------------------------------------------------------------- /POS/Scripts/2012.2.607/telerik.grid.resizing.min.js: -------------------------------------------------------------------------------- 1 | (function(a){var b=a.telerik;b.scripts.push("telerik.grid.resizing.js");b.resizing={};b.resizing.initialize=function(i){var c,d=a('
'),j,f,e,l=3;function g(q,r){a("th, th .t-grid-filter, th .t-link",q).add(document.body).css("cursor",r)}function k(q){var r=0;a("> .t-grouping-header, > .t-grid-top",q).each(function(){r+=this.offsetHeight});return r}function n(r){var s=0;a(".t-resize-handle",i.element).each(function(){s+=a(this).data("th").outerWidth();a(this).css("left",s-l)});s=-i.$tbody.closest(".t-grid-content").scrollLeft();r.prevAll("th").add(r).each(function(){s+=this.offsetWidth});var q=i.scrollable?a(".t-grid-content",i.element):a("tbody",i.element);var t=q.attr(i.scrollable?"clientWidth":"offsetWidth");if(s>=t){d.remove()}else{d.css({left:s,top:k(i.element),height:r.outerHeight()+q.attr(i.scrollable?"clientHeight":"offsetHeight")});if(!d.parent().length){d.appendTo(i.element)}}}function o(s){var q=s.$draggable.data("th"),t=a.inArray(q[0],q.parent().children(":visible")),r=i.$tbody.parent();if(!i.scrollable){c=r.children("colgroup").find("col:eq("+t+")")}else{c=i.$header.parent().prev().find("col:eq("+t+")").add(r.children("colgroup").find("col:eq("+t+")")).add(i.$footerWrap.find(">table>colgroup>col:eq("+t+")"))}e=s.pageX;f=q.outerWidth();j=i.$tbody.outerWidth()}function h(q){q.$draggable.dragCalled=true;var r=f+q.pageX-e;if(r>10){c.css("width",r);if(i.scrollable){i.$tbody.parent().add(i.$headerWrap.find("table")).add(i.$footer.find("table")).css("width",j+q.pageX-e)}n(q.$draggable.data("th"))}}function p(r){d.remove();g(i.element,"");if(r.$draggable.dragCalled){var q=r.$draggable.data("th");var s=q.outerWidth();if(i.onColumnResize&&s!=f){b.trigger(i.element,"columnResize",{column:i.columns[i.$columns().index(q)],oldWidth:f,newWidth:s})}}return false}function m(s){var t=0,u=i.element.id+"-column-resizing",q;if(s&&s.type==="mouseenter"){a(i.element).unbind("mouseenter",m)}var r=b.draggable.get(u);if(r){r.destroy()}i.$headerWrap.add(i.element).find("> .t-resize-handle").remove();i.$header.find(".t-header:visible").each(function(){t+=this.offsetWidth;var v=a(this);a('
').css({left:t-l,top:i.scrollable?0:k(i.element),width:l*2}).appendTo(i.scrollable?i.$headerWrap:i.element).data("th",v).mousedown(function(){n(v);q=a(this);g(i.element,q.css("cursor"))})});a(document).mouseup(function(){if(q){p({$draggable:q});q=null}});new b.draggable({owner:i.element,selector:".t-resize-handle",scope:u,distance:0,start:o,drag:h,stop:p})}m();a(i.element).one("mouseenter",m).bind("repaint",m)}})(jQuery); -------------------------------------------------------------------------------- /POS/Scripts/2012.2.607/telerik.menu.min.js: -------------------------------------------------------------------------------- 1 | (function(a){var b=a.telerik;b.scripts.push("telerik.menu.js");b.menu=function(e,f){this.element=e;this.nextItemZIndex=100;a.extend(this,f);a(".t-item:not(.t-state-disabled)",e).live("mouseenter",b.delegate(this,this.mouseenter)).live("mouseleave",b.delegate(this,this.mouseleave)).live("click",b.delegate(this,this.click));a(".t-item:not(.t-state-disabled) > .t-link",e).live("mouseenter",b.hover).live("mouseleave",b.leave);a(".t-item.t-state-disabled",e).live("click",function(){return false});a(document).click(b.delegate(this,this.documentClick));b.bind(this,{select:this.onSelect,open:this.onOpen,close:this.onClose,load:this.onLoad})};function d(e){var f=e.parent();return{direction:f.hasClass("t-menu")?f.hasClass("t-menu-vertical")?"right":"bottom":"right"}}function c(h,f){try{return a.contains(h,f)}catch(g){return false}}b.menu.prototype={toggle:function(f,e){a(f).each(function(){a(this).toggleClass("t-state-default",e).toggleClass("t-state-disabled",!e)})},enable:function(e){this.toggle(e,true)},disable:function(e){this.toggle(e,false)},open:function(e){var f=this;a(e).each(function(){var g=a(this);clearTimeout(g.data("timer"));g.data("timer",setTimeout(function(){var h=g.find(".t-group:first");if(h.length){b.fx.play(f.effects,h,d(g));g.css("z-index",f.nextItemZIndex++)}},100))})},close:function(e){var f=this;a(e).each(function(h,i){var g=a(i);clearTimeout(g.data("timer"));g.data("timer",setTimeout(function(){var j=g.find(".t-group:first");if(j.length){b.fx.rewind(f.effects,j,d(g),function(){g.css("zIndex","");if(a(f.element).find(".t-group:visible").length==0){f.nextItemZIndex=100}});j.find(".t-group").stop(false,true)}},100))})},mouseenter:function(g,h){var f=a(h);if(!this.openOnClick||this.clicked){if(!c(h,g.relatedTarget)){this.triggerEvent("open",f);this.open(f);var i=f.parent().closest(".t-item")[0];if(i&&!c(i,g.relatedTarget)){this.mouseenter(g,i)}}}if(this.openOnClick&&this.clicked){this.triggerEvent("close",f);f.siblings().each(a.proxy(function(e,j){this.close(a(j))},this))}},mouseleave:function(g,h){if(!this.openOnClick&&!c(h,g.relatedTarget)){var f=a(h);this.triggerEvent("close",f);this.close(f);var i=f.parent().closest(".t-item")[0];if(i&&!c(i,g.relatedTarget)){this.mouseleave(g,i)}}},click:function(g,h){g.stopPropagation();var f=a(h);if(f.hasClass("t-state-disabled")){g.preventDefault();return}if(b.trigger(this.element,"select",{item:f[0]})){g.preventDefault();return}if(!f.parent().hasClass("t-menu")||!this.openOnClick){return}g.preventDefault();this.clicked=true;this.triggerEvent("open",f);this.open(f)},documentClick:function(f,g){if(a.contains(this.element,f.target)){return}if(this.clicked){this.clicked=false;a(this.element).children(".t-item").each(a.proxy(function(e,h){this.close(a(h))},this))}},hasChildren:function(e){return e.find(".t-group:first").length},triggerEvent:function(f,e){if(this.hasChildren(e)){b.trigger(this.element,f,{item:e[0]})}}};a.fn.tMenu=function(e){return b.create(this,{name:"tMenu",init:function(f,g){return new b.menu(f,g)},options:e})};a.fn.tMenu.defaults={orientation:"horizontal",effects:b.fx.slide.defaults(),openOnClick:false}})(jQuery); -------------------------------------------------------------------------------- /POS/Scripts/gumbyScripts/libs/gumby.min.js: -------------------------------------------------------------------------------- 1 | (function(c){(function(){var j={},k=function(b,a){return j[b]=a},i={ui:[{selector:".checkbox",onEvent:"click",className:"checked",target:!1,condition:!1,complete:function(b){var a=b.hasClass("checked");b.children("input").attr("checked",a)}},{selector:".radio",onEvent:"click",className:"checked",target:!1,condition:!1,complete:function(b){b=b.children("input");c('input[name="'+b.attr("name")+'"]').attr("checked",!1).parent().removeClass("checked");b.attr("checked",!0).parent().addClass("checked")}}, 2 | {selector:'form[data-form="validate"] .field',onEvent:"blur",className:"error",target:!1,condition:function(b){var a=b.find("input, textarea").first(),c=a.val();if(!a.attr("required"))return!1;if("email"===a.attr("type")&&!c.match(/^[\w.%&=+$#!-']+@[\w.-]+\.[a-zA-Z]{2,4}$/)||!c.length)return b.addClass("error"),!1;b.removeClass("error")},complete:!1},{selector:'.toggle:not([data-on]), .toggle[data-on="click"]',onEvent:"click",className:"active",target:function(b){return b.add(c(b.attr("data-for")))}, 3 | condition:!1,complete:!1},{selector:'.toggle[data-on="hover"]',onEvent:"mouseover mouseout",className:"active",target:function(b){return b.add(c(b.attr("data-for")))},condition:!1,complete:!1}],init:function(){var b,a,e,f,h,d;for(b in i.ui)a=i.ui[b],c(a.selector),e=a.complete&&"function"===typeof a.complete?a.complete:!1,f=a.condition&&"function"===typeof a.condition?a.condition:!1,d=a.target&&"function"===typeof a.target?a.target:!1,h=a.className||!1,k(a.selector.replace(" ","-"),{GumbyCallback:e, 4 | GumbyConditionalCallBack:f,GumbyActiveClass:h,GumbyTarget:d}),c(document).on(a.onEvent,a.selector,function(a){a.preventDefault();var b=c(this),e=c(this),a=a.handleObj.selector.replace(" ","-"),a=j[a]||!1;if(a.GumbyConditionalCallBack)return a.GumbyConditionalCallBack(b);a.GumbyActiveClass&&(a.GumbyTarget&&(e=a.GumbyTarget(b)),e.toggleClass(a.GumbyActiveClass));a.GumbyCallback&&a.GumbyCallback(b)})}},g={init:function(){g.pickers();g.skipLinks();g.tabs()},pickers:function(){c(document).on("click",".picker", 5 | function(b){b.preventDefault();var b=c(this),a=null;if("handheld"===window.getComputedStyle(b.get(0),":after").getPropertyValue("content"))return!1;b.hover(function(){clearTimeout(a)},function(){var b=c(this);a=setTimeout(function(){b.removeClass("open")},500)});b.toggleClass("open")});c(document).on("click",".picker > ul > li",function(b){b.preventDefault();var b=c(this),a=b.parents(".picker"),e=b.children("a").html();a.children(".toggle").html(e+'');a.find("option").attr("selected", 6 | !1).eq(b.index()+1).attr("selected",!0)})},skipLinks:function(){var b=function(){var a,b,f=c("[data-type]"),h=!1,d=!1;a=c(this);if(a.get(0)===window&&!window.location.hash)return!1;a.get(0)===window&&window.location.hash?(b=window.location.hash.replace("#",""),d=!0):(a=a.attr("href").split("#"),b=a[a.length-1]);f.each(function(){var a=c(this).attr("data-type").split(" "),f;for(f in a)if(a[f]===b){h=c(this);return false}});if(!h.length)return!1;c("body,html").animate({scrollTop:h.offset().top},350); 7 | d&&(window.location.hash=b)};c(document).on("click",".skiplink a, .skipnav ul li a, .skip",b);c(window).load(b)},tabs:function(){var b=function(a){var b=a.parents(".tabs"),c={tab:b.find("ul").children("li.active"),content:b.find("div[data-tab].active")},a={tab:a.parent("li"),content:b.find("[data-tab="+a.attr("href").replace("#","")+"]")},d,g;for(d in c)c[d].removeClass("active");for(g in a)a[g].addClass("active")};c(document).on("click",".tabs ul li a",function(){b(c(this))});if(window.location.hash){var a= 8 | c('a[href="'+window.location.hash+'"]');a.length&&a.parents(".tabs").length&&b(a)}}};return{i:function(){i.init();g.init()}}})().i()})(window.jQuery); -------------------------------------------------------------------------------- /POS/Scripts/gumbyScripts/main.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | 3 | }); -------------------------------------------------------------------------------- /POS/Scripts/gumbyScripts/plugins.js: -------------------------------------------------------------------------------- 1 | window.log=function(){log.history=log.history||[];log.history.push(arguments);if(this.console){arguments.callee=arguments.callee.caller;var a=[].slice.call(arguments);(typeof console.log==="object"?log.apply.call(console.log,console,a):console.log.apply(console,a))}}; 2 | (function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();){b[a]=b[a]||c}})((function(){try 3 | {console.log();return window.console;}catch(err){return window.console={};}})()); 4 | 5 | // place any jQuery/helper plugins in here, instead of separate, slower script files. 6 | -------------------------------------------------------------------------------- /POS/Scripts/jquery.unobtrusive-ajax.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | ** Unobtrusive Ajax support library for jQuery 3 | ** Copyright (C) Microsoft Corporation. All rights reserved. 4 | */ 5 | (function(a){var b="unobtrusiveAjaxClick",g="unobtrusiveValidation";function c(d,b){var a=window,c=(d||"").split(".");while(a&&c.length)a=a[c.shift()];if(typeof a==="function")return a;b.push(d);return Function.constructor.apply(null,b)}function d(a){return a==="GET"||a==="POST"}function f(b,a){!d(a)&&b.setRequestHeader("X-HTTP-Method-Override",a)}function h(c,b,e){var d;if(e.indexOf("application/x-javascript")!==-1)return;d=(c.getAttribute("data-ajax-mode")||"").toUpperCase();a(c.getAttribute("data-ajax-update")).each(function(f,c){var e;switch(d){case"BEFORE":e=c.firstChild;a("
").html(b).contents().each(function(){c.insertBefore(this,e)});break;case"AFTER":a("
").html(b).contents().each(function(){c.appendChild(this)});break;default:a(c).html(b)}})}function e(b,e){var j,k,g,i;j=b.getAttribute("data-ajax-confirm");if(j&&!window.confirm(j))return;k=a(b.getAttribute("data-ajax-loading"));i=b.getAttribute("data-ajax-loading-duration")||0;a.extend(e,{type:b.getAttribute("data-ajax-method")||undefined,url:b.getAttribute("data-ajax-url")||undefined,beforeSend:function(d){var a;f(d,g);a=c(b.getAttribute("data-ajax-begin"),["xhr"]).apply(this,arguments);a!==false&&k.show(i);return a},complete:function(){k.hide(i);c(b.getAttribute("data-ajax-complete"),["xhr","status"]).apply(this,arguments)},success:function(a,e,d){h(b,a,d.getResponseHeader("Content-Type")||"text/html");c(b.getAttribute("data-ajax-success"),["data","status","xhr"]).apply(this,arguments)},error:c(b.getAttribute("data-ajax-failure"),["xhr","status","error"])});e.data.push({name:"X-Requested-With",value:"XMLHttpRequest"});g=e.type.toUpperCase();if(!d(g)){e.type="POST";e.data.push({name:"X-HTTP-Method-Override",value:g})}a.ajax(e)}function i(c){var b=a(c).data(g);return!b||!b.validate||b.validate()}a("a[data-ajax=true]").live("click",function(a){a.preventDefault();e(this,{url:this.href,type:"GET",data:[]})});a("form[data-ajax=true] input[type=image]").live("click",function(c){var g=c.target.name,d=a(c.target),f=d.parents("form")[0],e=d.offset();a(f).data(b,[{name:g+".x",value:Math.round(c.pageX-e.left)},{name:g+".y",value:Math.round(c.pageY-e.top)}]);setTimeout(function(){a(f).removeData(b)},0)});a("form[data-ajax=true] :submit").live("click",function(c){var e=c.target.name,d=a(c.target).parents("form")[0];a(d).data(b,e?[{name:e,value:c.target.value}]:[]);setTimeout(function(){a(d).removeData(b)},0)});a("form[data-ajax=true]").live("submit",function(d){var c=a(this).data(b)||[];d.preventDefault();if(!i(this))return;e(this,{url:this.action,type:this.method||"GET",data:c.concat(a(this).serializeArray())})})})(jQuery); -------------------------------------------------------------------------------- /POS/Scripts/productTree.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | /***********/ 3 | securityToken = $('[name=__RequestVerificationToken]').val(); 4 | $('body').bind('ajaxSend', function (elm, xhr, s) { 5 | if (s.type == 'POST' && typeof securityToken != 'undefined') { 6 | if (s.data.length > 0) { 7 | s.data += "&__RequestVerificationToken=" + encodeURIComponent(securityToken); 8 | } 9 | else { 10 | s.data = "__RequestVerificationToken=" + encodeURIComponent(securityToken); 11 | } 12 | } 13 | }); 14 | 15 | /***********/ 16 | function preventPropagation(e) { 17 | e.stopPropagation(); 18 | } 19 | 20 | $(document).on("click", ".item", preventPropagation); 21 | 22 | /***********/ 23 | function getCategories(e) { 24 | e.preventDefault(); 25 | e.stopPropagation(); 26 | var $parentCategory = $(this).closest(".parentCategory"); 27 | var parentCategoryName = $parentCategory.attr("id"); 28 | $('.divResult', $parentCategory).load("@Url.Action("CategoryList", "Product")", { 29 | parentCategory: parentCategoryName, 30 | }); 31 | $(this).attr("class", "parentCategoryLoaded"); 32 | } 33 | 34 | $(document).on("click", ".parentCategory", getCategories); 35 | 36 | /***********/ 37 | function hideCategories(e) { 38 | e.preventDefault(); 39 | e.stopPropagation(); 40 | $(this).children('.divResult').children().hide(); 41 | $(this).attr("class", "parentCategoryHidChildren"); 42 | } 43 | 44 | $(document).on("click", ".parentCategoryLoaded", hideCategories); 45 | 46 | /***********/ 47 | function unHideCategories(e) { 48 | e.preventDefault(); 49 | e.stopPropagation(); 50 | $(this).find(('.divResult:first')).children().show(); 51 | $(this).attr("class", "parentCategoryLoaded"); 52 | } 53 | 54 | $(document).on("click", ".parentCategoryHidChildren", unHideCategories); 55 | 56 | /***********/ 57 | function getProducts(f) { 58 | f.preventDefault(); 59 | f.stopPropagation(); 60 | var $category = $(this).closest(".category"); 61 | var categoryName = $category.attr("id"); 62 | $('.divResult', $category).load("@Url.Action("ProductList", "Product")", { 63 | category: categoryName 64 | }); 65 | $(this).attr("class", "categoryLoaded"); 66 | } 67 | 68 | $(document).on("click", ".category", getProducts); 69 | 70 | /***********/ 71 | function hideProducts(e) { 72 | e.preventDefault(); 73 | e.stopPropagation(); 74 | $(this).children('.divResult').children().hide(); 75 | $(this).attr("class", "categoryHidChildren"); 76 | } 77 | 78 | $(document).on("click", ".categoryLoaded", hideProducts); 79 | 80 | /***********/ 81 | function unHideProducts(e) { 82 | e.preventDefault(); 83 | e.stopPropagation(); 84 | $(this).find(('.divResult:first')).children().show(); 85 | $(this).attr("class", "categoryLoaded"); 86 | } 87 | 88 | $(document).on("click", ".categoryHidChildren", unHideProducts); 89 | 90 | }); -------------------------------------------------------------------------------- /POS/Settings.StyleCop: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | 5 | -------------------------------------------------------------------------------- /POS/Views/Admin/Edit.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.Product 2 | 3 | @{ 4 | ViewBag.Title = "Admin: Edit" + @Model.Name; 5 | Layout = "~/Views/Shared/_AdminLayout.cshtml"; 6 | } 7 | 8 |

Edit @Model.Name

9 | @using (Html.BeginForm("Edit", "Admin", FormMethod.Post, new { enctype = "multipart/form-data"})) 10 | { 11 | @Html.AntiForgeryToken() 12 | @Html.EditorForModel() 13 | 14 |
Image
15 |
16 | @if (Model.ImageData == null) 17 | { 18 | @:None 19 | } 20 | else 21 | { 22 | thumbnail 23 | } 24 |
Upload new image:
25 |
26 | 27 | @Html.ActionLink("Cancel and return to the list", "Index") 28 | } 29 | -------------------------------------------------------------------------------- /POS/Views/Admin/EditCategory.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.Category 2 | 3 | @{ 4 | ViewBag.Title = "Admin: Edit Category" + @Model.Name; 5 | Layout = "~/Views/Shared/_AdminLayout.cshtml"; 6 | } 7 | 8 |

Edit Category @Model.Name

9 | @using (Html.BeginForm("EditCategory", "Admin")) 10 | { 11 | @Html.AntiForgeryToken() 12 | @Html.EditorForModel() 13 | 14 | @Html.ActionLink("Cancel and return to the list", "IndexCategory") 15 | } 16 | -------------------------------------------------------------------------------- /POS/Views/Admin/EditParentCategory.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.ParentCategory 2 | 3 | @{ 4 | ViewBag.Title = "Admin: Edit Parent-Category" + @Model.Name; 5 | Layout = "~/Views/Shared/_AdminLayout.cshtml"; 6 | } 7 | 8 |

Edit Parent-Category @Model.Name

9 | @using (Html.BeginForm("EditParentCategory", "Admin")) 10 | { 11 | @Html.AntiForgeryToken() 12 | @Html.EditorForModel() 13 | 14 | @Html.ActionLink("Cancel and return to the list", "IndexParentCategory") 15 | } 16 | -------------------------------------------------------------------------------- /POS/Views/Admin/Index.cshtml: -------------------------------------------------------------------------------- 1 | @using POS.Domain.Model 2 | @model IEnumerable 3 | 4 | @{ 5 | ViewBag.Title = "Index"; 6 | Layout = "~/Views/Shared/_AdminLayout.cshtml"; 7 | 8 | } 9 | 10 |

All Products

11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | @foreach (Product item in Model) 22 | { 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 37 | 38 | } 39 |
NameDescriptionPriceCategoryParent-CategorySold atActions
@Html.ActionLink(item.Name, "Edit", new { id = item.ProductId })@item.Description@string.Format("{0:F}", item.Price)@item.Category.Name@item.Category.ParentCategory.Name@item.Establishment.Name 31 | @using (Html.BeginForm("Delete", "Admin")) 32 | { 33 | @Html.Hidden("id", item.ProductId) 34 | 35 | } 36 |
40 |

@Html.ActionLink("Add a new product", "Create")

-------------------------------------------------------------------------------- /POS/Views/Admin/IndexCategory.cshtml: -------------------------------------------------------------------------------- 1 | @using POS.Domain.Model 2 | @model IEnumerable 3 | 4 | @{ 5 | ViewBag.Title = "Category Index"; 6 | Layout = "~/Views/Shared/_AdminLayout.cshtml"; 7 | } 8 | 9 |

All Categories

10 | 11 | 12 | 13 | 14 | 15 | 16 | @foreach (Category item in Model) 17 | { 18 | 19 | 20 | 21 | 22 | 29 | 30 | } 31 |
NameParent-CategoryParent-Category Id
@Html.ActionLink(item.Name, "EditCategory", new { id = item.CategoryId })@item.ParentCategory.Name@item.ParentCategoryId 23 | @using (Html.BeginForm("DeleteCategory", "Admin")) 24 | { 25 | @Html.Hidden("id", item.CategoryId) 26 | 27 | } 28 |
32 |

@Html.ActionLink("Add a new category", "CreateCategory")

-------------------------------------------------------------------------------- /POS/Views/Admin/IndexParentCategory.cshtml: -------------------------------------------------------------------------------- 1 | @using POS.Domain.Model 2 | @model IEnumerable 3 | 4 | @{ 5 | ViewBag.Title = "Parent-Category Index"; 6 | Layout = "~/Views/Shared/_AdminLayout.cshtml"; 7 | } 8 | 9 |

All Categories

10 | 11 | 12 | 13 | 14 | @foreach (ParentCategory item in Model) 15 | { 16 | 17 | 18 | 25 | 26 | } 27 |
Name
@Html.ActionLink(item.Name, "EditParentCategory", new { id = item.ParentCategoryId }) 19 | @using (Html.BeginForm("DeleteParentCategory", "Admin")) 20 | { 21 | @Html.Hidden("id", item.ParentCategoryId) 22 | 23 | } 24 |
28 |

@Html.ActionLink("Add a new parent-category", "CreateParentCategory")

-------------------------------------------------------------------------------- /POS/Views/Cart/Checkout.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.ShippingDetails 2 | 3 | @{ 4 | ViewBag.Title = "POS: Checkout"; 5 | } 6 | 7 |

Check out now

8 | Please enter your details, and we'll ship your goods right away! 9 | @using (Html.BeginForm()) { 10 | 11 | @Html.AntiForgeryToken() 12 | @Html.ValidationSummary() 13 | 14 |

Ship to

15 |
Name: @Html.EditorFor(x => x.Name)
16 |

Address

17 |
Line 1: @Html.EditorFor(x => x.Line1)
18 |
Line 2: @Html.EditorFor(x => x.Line2)
19 |
Line 3: @Html.EditorFor(x => x.Line3)
20 |
City: @Html.EditorFor(x => x.City)
21 |
State: @Html.EditorFor(x => x.State)
22 |
Zip: @Html.EditorFor(x => x.Zip)
23 |
Country: @Html.EditorFor(x => x.Country)
24 |

Options

25 | 29 |

30 | 31 |

32 | } 33 | -------------------------------------------------------------------------------- /POS/Views/Cart/Completed.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "POS: Order Submitted"; 3 | } 4 | 5 |

Your order has been properly submitted.

6 | -------------------------------------------------------------------------------- /POS/Views/Cart/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Models.CartIndexViewModel 2 | 3 | @{ 4 | ViewBag.Title = "POS: Your Cart"; 5 | } 6 | 7 |

Your cart

8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | @foreach(var line in Model.Cart.Lines) { 17 | 18 | 19 | 20 | 21 | 22 | 30 | } 31 | 32 | 33 | 34 | 37 | 38 |
QuantityItemPriceSubtotal
@line.Quantity@line.Product.Name@line.Product.Price.ToString("c")@((line.Quantity * line.Product.Price).ToString("c")) 23 | @using (Html.BeginForm("RemoveFromCart", "Cart")) 24 | { 25 | @Html.Hidden("ProductId", line.Product.ProductId) 26 | @Html.HiddenFor(x => x.ReturnUrl) 27 | 28 | } 29 |
Total: 35 | @Model.Cart.ComputeTotalValue().ToString("c") 36 |
39 |

40 | Continue shopping 41 | @Html.ActionLink("Checkout now", "Checkout") 42 |

43 | -------------------------------------------------------------------------------- /POS/Views/Cart/Summary.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.Cart 2 | 3 | @{ 4 | Layout = null; 5 | } 6 | 7 |
8 | 9 | Your cart: 10 | @Model.Lines.Sum(x => x.Quantity) item(s), 11 | @Model.ComputeTotalValue().ToString("c") 12 | 13 | @Html.ActionLink("Checkout", "Index", "Cart", 14 | new {returnUrl = Request.Url.PathAndQuery}, null) 15 |
-------------------------------------------------------------------------------- /POS/Views/Establishment/Edit.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.Establishment 2 | 3 | @{ 4 | ViewBag.Title = "Establishment Manager: Edit" + @Model.Name; 5 | Layout = "~/Views/Shared/_AdminLayout.cshtml"; 6 | } 7 | 8 |

Edit @Model.Name

9 | @using (Html.BeginForm("Edit", "Establishment", FormMethod.Post, new { enctype = "multipart/form-data" })) 10 | { 11 | @Html.AntiForgeryToken() 12 | @Html.EditorForModel() 13 | 14 |
Image
15 |
16 | @if (Model.ImageData == null) 17 | { 18 | @:None 19 | } 20 | else 21 | { 22 | thumbnail 23 | } 24 |
Upload new image:
25 |
26 | 27 | @Html.ActionLink("Cancel and return to the list", "Index") 28 | } 29 | -------------------------------------------------------------------------------- /POS/Views/Establishment/Index.cshtml: -------------------------------------------------------------------------------- 1 | @using POS.Domain.Model 2 | @model IEnumerable 3 | 4 | @{ 5 | ViewBag.Title = "Index"; 6 | Layout = "~/Views/Shared/_AdminLayout.cshtml"; 7 | } 8 | 9 |

All Locations

10 | 11 | 12 | 13 | 14 | 15 | @foreach (Establishment item in Model) 16 | { 17 | 18 | 19 | 26 | 27 | } 28 |
NameActions
@Html.ActionLink(item.Name, "Edit", new { id = item.EstablishmentId }) 20 | @using (Html.BeginForm("Delete", "Establishment")) 21 | { 22 | @Html.Hidden("id", item.EstablishmentId) 23 | 24 | } 25 |
29 |

@Html.ActionLink("Add a new establishment", "Create")

-------------------------------------------------------------------------------- /POS/Views/Home/EstablishmentProductList.cshtml: -------------------------------------------------------------------------------- 1 | @using POS.Domain.Model 2 | @model ICollection 3 | 4 | @{ 5 | ViewBag.Title = "EstablishmentProductList"; 6 | } 7 | 8 | @foreach (var item in Model) 9 | { 10 |
11 |

12 | * @Html.Display(item.Name) 13 |

14 |
15 | } 16 | -------------------------------------------------------------------------------- /POS/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @using POS.Domain.Model 2 | @using Telerik.Web.Mvc.UI 3 | @model IQueryable 4 | 5 | @{ 6 | ViewBag.Title = "Home Page"; 7 | } 8 | 9 |
10 |
11 | @foreach(Establishment p in Model) 12 | { 13 | Html.RenderPartial("_EstablishmentSummary", p); 14 | } 15 |
16 |
-------------------------------------------------------------------------------- /POS/Views/Home/_EstablishmentSummary.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.Establishment 2 | 3 |
4 |

@Model.Name

5 | @Html.ActionLink(Model.Name ,"Establishment", new { id = Model.EstablishmentId }) 6 |
-------------------------------------------------------------------------------- /POS/Views/Membership/ChangePassword.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Models.ChangePasswordModel 2 | 3 | @{ 4 | ViewBag.Title = "Change Password"; 5 | } 6 | 7 |

Change Password

8 |

9 | Use the form below to change your password. 10 |

11 |

12 | New passwords are required to be a minimum of @Membership.MinRequiredPasswordLength characters in length. 13 |

14 | 15 | 16 | 17 | 18 | @using (Html.BeginForm()) { 19 | @Html.ValidationSummary(true, "Password change was unsuccessful. Please correct the errors and try again.") 20 |
21 |
22 | Account Information 23 | 24 |
25 | @Html.LabelFor(m => m.OldPassword) 26 |
27 |
28 | @Html.PasswordFor(m => m.OldPassword) 29 | @Html.ValidationMessageFor(m => m.OldPassword) 30 |
31 | 32 |
33 | @Html.LabelFor(m => m.NewPassword) 34 |
35 |
36 | @Html.PasswordFor(m => m.NewPassword) 37 | @Html.ValidationMessageFor(m => m.NewPassword) 38 |
39 | 40 |
41 | @Html.LabelFor(m => m.ConfirmPassword) 42 |
43 |
44 | @Html.PasswordFor(m => m.ConfirmPassword) 45 | @Html.ValidationMessageFor(m => m.ConfirmPassword) 46 |
47 | 48 |

49 | 50 |

51 |
52 |
53 | } 54 | -------------------------------------------------------------------------------- /POS/Views/Membership/ChangePasswordSuccess.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "Change Password"; 3 | } 4 | 5 |

Change Password

6 |

7 | Your password has been changed successfully. 8 |

9 | -------------------------------------------------------------------------------- /POS/Views/Membership/LogOn.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Models.LogOnModel 2 | 3 | @{ 4 | ViewBag.Title = "Log On"; 5 | } 6 | 7 |

Log On

8 |

9 | Please enter your user name and password. @Html.ActionLink("Register", "Register") if you don't have an account. 10 |

11 | 12 | 13 | 14 | 15 | @Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.") 16 | 17 | @using (Html.BeginForm()) { 18 |
19 |
20 | Account Information 21 | 22 |
23 | @Html.LabelFor(m => m.UserName) 24 |
25 |
26 | @Html.TextBoxFor(m => m.UserName) 27 | @Html.ValidationMessageFor(m => m.UserName) 28 |
29 | 30 |
31 | @Html.LabelFor(m => m.Password) 32 |
33 |
34 | @Html.PasswordFor(m => m.Password) 35 | @Html.ValidationMessageFor(m => m.Password) 36 |
37 | 38 |
39 | @Html.CheckBoxFor(m => m.RememberMe) 40 | @Html.LabelFor(m => m.RememberMe) 41 |
42 | 43 |

44 | 45 |

46 |
47 |
48 | } 49 | -------------------------------------------------------------------------------- /POS/Views/Membership/Register.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Models.RegisterModel 2 | 3 | @{ 4 | ViewBag.Title = "Register"; 5 | } 6 | 7 |

Create a New Account

8 |

9 | Use the form below to create a new account. 10 |

11 |

12 | Passwords are required to be a minimum of @Membership.MinRequiredPasswordLength characters in length. 13 |

14 | 15 | 16 | 17 | 18 | @using (Html.BeginForm()) { 19 | @Html.ValidationSummary(true, "Account creation was unsuccessful. Please correct the errors and try again.") 20 |
21 |
22 | Account Information 23 | 24 |
25 | @Html.LabelFor(m => m.UserName) 26 |
27 |
28 | @Html.TextBoxFor(m => m.UserName) 29 | @Html.ValidationMessageFor(m => m.UserName) 30 |
31 | 32 |
33 | @Html.LabelFor(m => m.Email) 34 |
35 |
36 | @Html.TextBoxFor(m => m.Email) 37 | @Html.ValidationMessageFor(m => m.Email) 38 |
39 | 40 |
41 | @Html.LabelFor(m => m.Password) 42 |
43 |
44 | @Html.PasswordFor(m => m.Password) 45 | @Html.ValidationMessageFor(m => m.Password) 46 |
47 | 48 |
49 | @Html.LabelFor(m => m.ConfirmPassword) 50 |
51 |
52 | @Html.PasswordFor(m => m.ConfirmPassword) 53 | @Html.ValidationMessageFor(m => m.ConfirmPassword) 54 |
55 | 56 |

57 | 58 |

59 |
60 |
61 | } 62 | -------------------------------------------------------------------------------- /POS/Views/OrderDetails/Create.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.OrderDetail 2 | 3 | @{ 4 | ViewBag.Title = "Create"; 5 | } 6 | 7 |

Create

8 | 9 | 10 | 11 | 12 | @using (Html.BeginForm()) { 13 | @Html.ValidationSummary(true) 14 |
15 | OrderDetail 16 | 17 |
18 | @Html.LabelFor(model => model.OrderId, "Order") 19 |
20 |
21 | @Html.DropDownList("OrderId", String.Empty) 22 | @Html.ValidationMessageFor(model => model.OrderId) 23 |
24 | 25 |
26 | @Html.LabelFor(model => model.Quantity) 27 |
28 |
29 | @Html.EditorFor(model => model.Quantity) 30 | @Html.ValidationMessageFor(model => model.Quantity) 31 |
32 | 33 |
34 | @Html.LabelFor(model => model.ProductName) 35 |
36 |
37 | @Html.EditorFor(model => model.ProductName) 38 | @Html.ValidationMessageFor(model => model.ProductName) 39 |
40 | 41 |
42 | @Html.LabelFor(model => model.UnitPrice) 43 |
44 |
45 | @Html.EditorFor(model => model.UnitPrice) 46 | @Html.ValidationMessageFor(model => model.UnitPrice) 47 |
48 | 49 |

50 | 51 |

52 |
53 | } 54 | 55 |
56 | @Html.ActionLink("Back to List", "Index") 57 |
58 | -------------------------------------------------------------------------------- /POS/Views/OrderDetails/DeeperLook.cshtml: -------------------------------------------------------------------------------- 1 | @using POS.Models 2 | @using Telerik.Web.Mvc.UI 3 | @model IEnumerable 4 | @{ 5 | ViewBag.Title = "Deeper Look"; 6 | } 7 | 8 |

Deeper Look

9 | @(Html.Telerik().Grid() 10 | .Name("Stats") 11 | .Columns(columns => 12 | { 13 | columns.Bound(o => o.Stat).Width(100); 14 | columns.Bound(o => o.Average).Width(75).Format("{0:C}"); 15 | columns.Bound(o => o.Median).Width(75).Format("{0:C}"); 16 | }) 17 | .ClientEvents(events => events.OnRowDataBound("hourly_onRowDataBound")) 18 | .DetailView(details => details.ClientTemplate( 19 | Html.Telerik().Grid() 20 | .Name("DeeperStat_<#= DeeperLookViewModelId #>") 21 | .Columns(columns => 22 | { 23 | columns.Bound(o => o.Stat).Width(90); 24 | columns.Bound(o => o.Average).Width(75).Format("{0:C}"); 25 | columns.Bound(o => o.Median).Width(75).Format("{0:C}"); 26 | }) 27 | .DataBinding(dataBinding => dataBinding.Ajax().Select("_DeeperStat", "OrderDetails", new { id = "<#= DeeperLookViewModelId #>" })) 28 | .Sortable() 29 | .Scrollable(scrolling => scrolling.Height("auto")) 30 | .Scrollable(scrolling => scrolling.Enabled(false)) 31 | .Filterable() 32 | .ToHtmlString() 33 | )) 34 | .DataBinding(dataBinding => dataBinding.Ajax().Select("_DeeperLook", "OrderDetails").Enabled((bool)ViewData["ajax"])) 35 | .Pageable(paging => paging.PageSize(5)) 36 | .Scrollable(scrolling => scrolling.Height("auto")) 37 | .Scrollable(scrolling => scrolling.Enabled(false)) 38 | .Sortable() 39 | ) 40 | 41 | 42 | -------------------------------------------------------------------------------- /POS/Views/OrderDetails/DeeperLook2.cshtml: -------------------------------------------------------------------------------- 1 | @using POS.Models 2 | @using Telerik.Web.Mvc.UI 3 | @model IEnumerable 4 | @{ 5 | ViewBag.Title = "Deeper Look"; 6 | } 7 | 8 |

Deeper Look

9 | @(Html.Telerik().Grid() 10 | .Name("Stat") 11 | .Columns(columns => 12 | { 13 | columns.Bound(o => o.Stat).Width(100); 14 | columns.Bound(o => o.Average).Width(75); 15 | columns.Bound(o => o.Median).Width(75); 16 | }) 17 | .ClientEvents(events => events.OnRowDataBound("hourly_onRowDataBound")) 18 | .DetailView(details => details.ClientTemplate( 19 | Html.Telerik().Grid() 20 | .Name("Stat_<#= DeeperLookViewModelId #>") 21 | .Columns(columns => 22 | { 23 | columns.Bound(o => o.Stat).Width(1000); 24 | columns.Bound(o => o.Average).Width(75); 25 | columns.Bound(o => o.Median).Width(75); 26 | }) 27 | .ClientEvents(events => events.OnRowDataBound("deeperStats_onRowDataBound")) 28 | .DetailView(ordersDetailView => ordersDetailView.ClientTemplate( 29 | Html.Telerik().Grid() 30 | .Name("Stat2_<#= DeeperLookViewModelId #>") 31 | .Columns(columns => 32 | { 33 | columns.Bound(o2 => o2.Stat).Width(90); 34 | columns.Bound(o2 => o2.Average).Width(75); 35 | columns.Bound(o2 => o2.Median).Width(75); 36 | }) 37 | .DataBinding(dataBinding => dataBinding.Ajax().Select("_GrossRevHourly", "OrderDetails")) 38 | .Pageable() 39 | .Sortable() 40 | .ToHtmlString() 41 | )) 42 | .DataBinding(dataBinding => dataBinding.Ajax() 43 | .Select("_OrdersForEmployeeHierarchyAjax", "Grid", new { employeeID = "<#= EmployeeID #>" })) 44 | .Pageable() 45 | .Sortable() 46 | .Filterable() 47 | .ToHtmlString() 48 | )) 49 | .DataBinding(dataBinding => dataBinding.Ajax().Select("_DeeperLook", "OrderDetails")) 50 | .Pageable(paging => paging.PageSize(5)) 51 | .Scrollable(scrolling => scrolling.Height(580)) 52 | .Sortable() 53 | ) 54 | 55 | 56 | -------------------------------------------------------------------------------- /POS/Views/OrderDetails/Delete.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.OrderDetail 2 | 3 | @{ 4 | ViewBag.Title = "Delete"; 5 | } 6 | 7 |

Delete

8 | 9 |

Are you sure you want to delete this?

10 |
11 | OrderDetail 12 | 13 |
Order
14 |
15 | @Html.DisplayFor(model => model.Order.OrderId) 16 |
17 | 18 |
Quantity
19 |
20 | @Html.DisplayFor(model => model.Quantity) 21 |
22 | 23 |
ProductName
24 |
25 | @Html.DisplayFor(model => model.ProductName) 26 |
27 | 28 |
UnitPrice
29 |
30 | @Html.DisplayFor(model => model.UnitPrice) 31 |
32 |
33 | @using (Html.BeginForm()) { 34 |

35 | | 36 | @Html.ActionLink("Back to List", "Index") 37 |

38 | } 39 | -------------------------------------------------------------------------------- /POS/Views/OrderDetails/Details.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.OrderDetail 2 | 3 | @{ 4 | ViewBag.Title = "Details"; 5 | } 6 | 7 |

Details

8 | 9 |
10 | OrderDetail 11 | 12 |
Order
13 |
14 | @Html.DisplayFor(model => model.Order.OrderId) 15 |
16 | 17 |
Quantity
18 |
19 | @Html.DisplayFor(model => model.Quantity) 20 |
21 | 22 |
ProductName
23 |
24 | @Html.DisplayFor(model => model.ProductName) 25 |
26 | 27 |
UnitPrice
28 |
29 | @Html.DisplayFor(model => model.UnitPrice) 30 |
31 |
32 |

33 | @Html.ActionLink("Edit", "Edit", new { id=Model.OrderDetailId }) | 34 | @Html.ActionLink("Back to List", "Index") 35 |

36 | -------------------------------------------------------------------------------- /POS/Views/OrderDetails/Edit.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.OrderDetail 2 | 3 | @{ 4 | ViewBag.Title = "Edit"; 5 | } 6 | 7 |

Edit

8 | 9 | 10 | 11 | 12 | @using (Html.BeginForm()) { 13 | @Html.ValidationSummary(true) 14 |
15 | OrderDetail 16 | 17 | @Html.HiddenFor(model => model.OrderDetailId) 18 | 19 |
20 | @Html.LabelFor(model => model.OrderId, "Order") 21 |
22 |
23 | @Html.DropDownList("OrderId", String.Empty) 24 | @Html.ValidationMessageFor(model => model.OrderId) 25 |
26 | 27 |
28 | @Html.LabelFor(model => model.Quantity) 29 |
30 |
31 | @Html.EditorFor(model => model.Quantity) 32 | @Html.ValidationMessageFor(model => model.Quantity) 33 |
34 | 35 |
36 | @Html.LabelFor(model => model.ProductName) 37 |
38 |
39 | @Html.EditorFor(model => model.ProductName) 40 | @Html.ValidationMessageFor(model => model.ProductName) 41 |
42 | 43 |
44 | @Html.LabelFor(model => model.UnitPrice) 45 |
46 |
47 | @Html.EditorFor(model => model.UnitPrice) 48 | @Html.ValidationMessageFor(model => model.UnitPrice) 49 |
50 | 51 |

52 | 53 |

54 |
55 | } 56 | 57 |
58 | @Html.ActionLink("Back to List", "Index") 59 |
60 | -------------------------------------------------------------------------------- /POS/Views/OrderDetails/EstablishmentSalesReport.cshtml: -------------------------------------------------------------------------------- 1 | @using Telerik.Web.Mvc.UI 2 | @model IEnumerable 3 | @{ 4 | ViewBag.Title = "Establishment Sales Report"; 5 | } 6 | 7 |

FirstLook

8 | @(Html.Telerik().Grid(Model) 9 | .Name("Grid") 10 | .Scrollable(scrolling => scrolling.Height("auto")) 11 | .Columns(columns => 12 | { 13 | columns.Bound(o => o.OrderId).Width(75); 14 | columns.Bound(o => o.ProductName).Width(100); 15 | columns.Bound(o => o.Price).Width(75); 16 | columns.Bound(o => o.ProductQuantity).Width(75); 17 | columns.Bound(o => o.TotalLineCost).Width(75) 18 | .Aggregate(aggregates => aggregates.Sum()) 19 | .Format("{0:c}") 20 | .FooterTemplate(@Transaction Total: @item.Sum.Format("{0:c}")) 21 | .GroupFooterTemplate(@Transaction Total: @item.Sum.Format("{0:c}")) 22 | .ClientFooterTemplate("Transaction Total: <#= $.telerik.formatString('{0:c}', Sum) #>") 23 | .ClientGroupFooterTemplate("Transaction Total: <#= $.telerik.formatString('{0:c}', Sum) #>"); 24 | columns.Bound(o => o.EstablishmentName).Width(100); 25 | 26 | }) 27 | .DataBinding(dataBinding => 28 | { 29 | dataBinding.Server().Select("EstablishmentSalesReport", "OrderDetails", new { ajax = ViewData["ajax"] }); 30 | dataBinding.Ajax().Select("_EstablishmentSalesReport", "OrderDetails").Enabled((bool)ViewData["ajax"]); 31 | }) 32 | .Scrollable(scrolling => scrolling.Enabled((bool)ViewData["scrolling"])) 33 | .Sortable(sorting => sorting.Enabled((bool)ViewData["sorting"])) 34 | .Pageable(paging => paging.Enabled((bool)ViewData["paging"])) 35 | .Filterable(filtering => filtering.Enabled((bool)ViewData["filtering"])) 36 | .Groupable(grouping => grouping.Enabled((bool)ViewData["grouping"])) 37 | .Footer((bool)ViewData["showFooter"]) 38 | .Groupable(settings => settings.Groups(groups => groups.Add(o => o.OrderId)).Visible(true)) 39 | ) -------------------------------------------------------------------------------- /POS/Views/OrderDetails/FullOrders.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | 3 | @{ 4 | ViewBag.Title = "title"; 5 | } 6 | 7 |

Orders

8 | 9 | 10 | 11 | 14 | 17 | 18 | 19 | @foreach (var item in Model) 20 | { 21 | 22 | 25 | 28 | 29 | if (item.OrderDetails != null) 30 | { 31 | foreach (var subItem in item.OrderDetails) 32 | { 33 | 34 | 37 | 40 | 43 | 44 | } 45 | } 46 | } 47 |
12 | Order Number: 13 | 15 | Sold At: 16 |
23 | Order #: @this.Html.DisplayFor(modelItem => item.OrderId) 24 | 26 | Location: @Html.DisplayFor(modelItem => item.Establishment.Name) 27 |
35 | Quantity: @this.Html.DisplayFor(modelItem => subItem.Quantity) 36 | 38 | Name: @this.Html.DisplayFor(modelItem => subItem.ProductName) 39 | 41 | Price per Product: @this.Html.DisplayFor(modelItem => subItem.UnitPrice) 42 |
48 | 49 | 50 | -------------------------------------------------------------------------------- /POS/Views/OrderDetails/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | 3 | @{ 4 | ViewBag.Title = "Index"; 5 | } 6 | 7 |

Index

8 | 9 |

10 | @Html.ActionLink("Create New", "Create") 11 |

12 |

Navigate to /OrderDetails/EstablishmentSalesReport/id where id is = the id of the Esablishment who's sales report you would like to see.

13 | 14 | 15 | 18 | 21 | 24 | 27 | 28 | 29 | 30 | @foreach (var item in Model) { 31 | 32 | 35 | 38 | 41 | 44 | 49 | 50 | } 51 | 52 |
16 | Order 17 | 19 | Quantity 20 | 22 | ProductName 23 | 25 | UnitPrice 26 |
33 | @Html.DisplayFor(modelItem => item.Order.OrderId) 34 | 36 | @Html.DisplayFor(modelItem => item.Quantity) 37 | 39 | @Html.DisplayFor(modelItem => item.ProductName) 40 | 42 | @Html.DisplayFor(modelItem => item.UnitPrice) 43 | 45 | @Html.ActionLink("Edit", "Edit", new { id=item.OrderDetailId }) | 46 | @Html.ActionLink("Details", "Details", new { id=item.OrderDetailId }) | 47 | @Html.ActionLink("Delete", "Delete", new { id=item.OrderDetailId }) 48 |
53 | 54 | @{ 55 | 56 | var grid = new WebGrid(Model, defaultSort:"Name"); 57 | 58 | } 59 | 60 | @grid.GetHtml() -------------------------------------------------------------------------------- /POS/Views/OrderDetails/Master.cshtml: -------------------------------------------------------------------------------- 1 | @using Telerik.Web.Mvc.UI 2 | @model IEnumerable 3 | @{ 4 | ViewBag.Title = "Master"; 5 | } 6 | 7 |

FirstLook

8 | @(Html.Telerik().Grid(Model) 9 | .Name("Grid") 10 | .Scrollable(scrolling => scrolling.Height("auto")) 11 | .Columns(columns => 12 | { 13 | columns.Bound(o => o.OrderId).Width(75).Visible(false); 14 | columns.Bound(o => o.ProductName).Width(100); 15 | columns.Bound(o => o.Price).Width(75); 16 | columns.Bound(o => o.TotalLineCost).Width(75); 17 | columns.Bound(o => o.ProductQuantity).Width(75); 18 | columns.Bound(o => o.EstablishmentName).Width(100); 19 | columns.Bound(o => o.TimeProcessed).Width(75); 20 | columns.Bound(o => o.CustomerName).Width(100); 21 | columns.Bound(o => o.LineItemPromo).Width(100); 22 | columns.Bound(o => o.TotalLineCostAfterPromo).Width(75) 23 | .Aggregate(aggregates => aggregates.Sum()) 24 | .Format("{0:c}") 25 | .FooterTemplate(@Total Sum: @item.Sum.Format("{0:c}")) 26 | .GroupFooterTemplate(@Total Sum: @item.Sum.Format("{0:c}")) 27 | .ClientFooterTemplate("Total Sum: <#= $.telerik.formatString('{0:c}', Sum) #>") 28 | .ClientGroupFooterTemplate("Sum: <#= $.telerik.formatString('{0:c}', Sum) #>"); 29 | columns.Bound(o => o.TotalCostOfOrder).Width(75); 30 | 31 | }) 32 | .DataBinding(dataBinding => 33 | { 34 | dataBinding.Server().Select("Master", "OrderDetails", new { ajax = ViewData["ajax"] }); 35 | dataBinding.Ajax().Select("_Master", "OrderDetails").Enabled((bool)ViewData["ajax"]); 36 | }) 37 | .Scrollable(scrolling => scrolling.Enabled((bool)ViewData["scrolling"])) 38 | .Sortable(sorting => sorting.Enabled((bool)ViewData["sorting"])) 39 | .Pageable(paging => paging.Enabled((bool)ViewData["paging"])) 40 | .Filterable(filtering => filtering.Enabled((bool)ViewData["filtering"])) 41 | .Groupable(grouping => grouping.Enabled((bool)ViewData["grouping"])) 42 | .Footer((bool)ViewData["showFooter"]) 43 | .Groupable(settings => settings.Groups(groups => groups.Add(o => o.OrderId)).Visible(true)) 44 | ) -------------------------------------------------------------------------------- /POS/Views/Product/Categories.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | 3 | @{ 4 | ViewBag.Title = "Categories"; 5 | } 6 | 7 | @foreach (var p in Model) { 8 |
9 | @p.CategoryId 10 |

@p.Name

11 |
} 12 | -------------------------------------------------------------------------------- /POS/Views/Product/CategoryList.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | 3 | @foreach (var p in Model) 4 | { 5 | Html.RenderPartial("_CategorySummary", p); 6 | } -------------------------------------------------------------------------------- /POS/Views/Product/List.cshtml: -------------------------------------------------------------------------------- 1 | @using POS.Domain.Model 2 | @model IQueryable 3 | 4 | @{ 5 | ViewBag.Title = "List"; 6 | } 7 | 8 | @foreach (Category p in Model) 9 | { 10 | Html.RenderPartial("_CategorySummary", p); 11 | } 12 | 13 | -------------------------------------------------------------------------------- /POS/Views/Product/ProductList.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | 3 | @foreach (var p in Model) 4 | { 5 | Html.RenderPartial("_ProductSummary", p); 6 | } -------------------------------------------------------------------------------- /POS/Views/Product/_CategorySummary.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.Category 2 | 3 |
4 |

@Model.Name

5 |
6 |
7 |
-------------------------------------------------------------------------------- /POS/Views/Product/_ParentCategorySummary.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.ParentCategory 2 | 3 |
4 |

@Model.Name

5 |
6 |
7 |
-------------------------------------------------------------------------------- /POS/Views/Product/_ProductSummary.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Domain.Model.Product 2 | 3 |
4 |

@Model.Name

5 | @if (Model.ImageData != null) 6 | { 7 |
8 | thumbnail 9 |
10 | } 11 |

@Model.Description

12 | 13 | @using(Html.BeginForm("AddToCart", "Cart")) { 14 | @Html.HiddenFor(x => x.ProductId) 15 | @Html.Hidden("returnUrl", Request.Url.PathAndQuery) 16 | 17 | } 18 | 19 |

@Model.Price.ToString("c")

20 |
21 | 22 | -------------------------------------------------------------------------------- /POS/Views/ServerReport/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model POS.Models.ServerReportIndexViewModel 2 | 3 | @{ 4 | ViewBag.Title = "Index"; 5 | } 6 | 7 |

Index

8 | 9 |

10 | @Html.ActionLink("Create New", "Create") 11 |

12 | 13 | 14 | 17 | 20 | 23 | 26 | 29 | 32 | 35 | 36 | 37 | 38 | @foreach (var item in Model) { 39 | 40 | 43 | 46 | 49 | 52 | 55 | 58 | 61 | 66 | 67 | } 68 | 69 |
15 | EstablishmentId 16 | 18 | ServerTip 19 | 21 | TotalCost 22 | 24 | SalesTax 25 | 27 | TimeProcessed 28 | 30 | CustomerName 31 | 33 | ServerId 34 |
41 | @Html.DisplayFor(modelItem => item.EstablishmentId) 42 | 44 | @Html.DisplayFor(modelItem => item.ServerTip) 45 | 47 | @Html.DisplayFor(modelItem => item.TotalCost) 48 | 50 | @Html.DisplayFor(modelItem => item.SalesTax) 51 | 53 | @Html.DisplayFor(modelItem => item.TimeProcessed) 54 | 56 | @Html.DisplayFor(modelItem => item.CustomerName) 57 | 59 | @Html.DisplayFor(modelItem => item.ServerId) 60 | 62 | @Html.ActionLink("Edit", "Edit", new { id=item.OrderId }) | 63 | @Html.ActionLink("Details", "Details", new { id=item.OrderId }) | 64 | @Html.ActionLink("Delete", "Delete", new { id=item.OrderId }) 65 |
70 | -------------------------------------------------------------------------------- /POS/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @model System.Web.Mvc.HandleErrorInfo 2 | 3 | @{ 4 | ViewBag.Title = "Error"; 5 | } 6 | 7 |

8 | Sorry, an error occurred while processing your request. 9 |

10 | -------------------------------------------------------------------------------- /POS/Views/Shared/_AdminLayout.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | @ViewBag.Title 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | @if (TempData["message"] != null) 14 | { 15 |
@TempData["message"]
16 | } 17 | @RenderBody() 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /POS/Views/Shared/_LogOnPartial.cshtml: -------------------------------------------------------------------------------- 1 | @if(Request.IsAuthenticated) { 2 | Welcome @User.Identity.Name! 3 | [ @Html.ActionLink("Log Off", "LogOff", "Account") ] 4 | } 5 | else { 6 | @:[ @Html.ActionLink("Log On", "LogOn", "Account") ] 7 | } 8 | -------------------------------------------------------------------------------- /POS/Views/Web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 |
7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 39 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /POS/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_Layout.cshtml"; 3 | 4 | } -------------------------------------------------------------------------------- /POS/Web.Debug.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | -------------------------------------------------------------------------------- /POS/Web.Release.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 17 | 18 | 19 | 30 | 31 | -------------------------------------------------------------------------------- /POS/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | POS Read Me 2 | ============= 3 | contact: ecnalyr@gmail.com 4 | 5 | Build Instructions 6 | ------------------ 7 | 1. Open in Visual Studio 2010 8 | 2. Build POS.Infrastructure 9 | 3. Build Pos 10 | 4. You are finished. 11 | 12 | Contributing 13 | ------------ 14 | 15 | 1. Fork it. 16 | 2. Create a branch (`git checkout -b my_changes`) 17 | 3. Commit your changes (`git commit -am "Added these features"`) 18 | 4. Push to the branch (`git push origin my_changes`) 19 | 5. Open a [Pull Request][1] 20 | 6. Wait for your Pull Request to be reviewed by Ecnalyr. 21 | 22 | 23 | [1]: http://github.com/github/pos/pulls --------------------------------------------------------------------------------