angular js shopping cart using mvc and wcf rest

25
Articles » Web Development » Applications & Tools » General syed shanu, 25 May 2015 CPOL 22.5K 1.8K 83 Angular JS Shopping Cart using MVC and WCF Rest This article explains in detail how to create a simple Online Shopping Cart using AngularJS and WCF Rest Service. Download source - 8.7 MB Introduction You can also view my previous articles related to AngularJs using MVC and WCF REST Service. http://www.codeproject.com/Articles/893821/MVC-AngularJS-and-WCF-Rest-Service-For-Mind-Reader http://www.codeproject.com/Articles/988680/Angular-JS-Filter-Sorting-and-Animation-using-MVC This article will explain in detail how to create an simple Online Shopping Cart using Angular JS and WCF Rest Service. This article will explain: 1. How to create a WCF Rest service and retrieve and insert data from a database. 2. How to install the Angular JS Package into a MVC application. 3. How to upload Image to our root folder using AngularJs and MVC. 4. Select and Insert Item Details From database using AngularJS and WCF Rest 5. How to use a WCS service in Angular JS to create our own simple Online Shopping Application which Includes. Display Items with Filter and sorting options. Select and Add Items to Shopping Cart. Display Total Price, Total Qty and Grand Price Total in Shopping Cart. Upload Image to Server root folder Insert and select data from database. Display Shopping cart Details. Note: the prerequisites are Visual Studio 2013 (if you don't have Visual Studio 2013, you can download it from the Microsoft website at http://www.visualstudio.com/en-us /products/visual-studio-community-vs ). Here we can see some basics and reference links for Windows Communication Foundation (WCF). WCF is a framework for building service-oriented applications. Service-oriented application: Using this protocol the service can be shared and used over a network. For example let's consider now we are working on a project and we need to create some common database function and those functions need to be used in multiple projects and the projects are in multiple places and connected via a network such as the internet. In this case we can create a WCF service and we can write all our common database functions in our WCF service class. We can deploy our WCF in IIS and use the URL in our application to do DB functions. In the code part let's see how to create a WCF REST service and use it in our AngularJS application. If you are interested in reading more details about WCF then kindly go to this link. AngularJS 4.85 (41 votes) Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An... 1 de 25 26-05-2015 13:52

Upload: cesarmarinhorj

Post on 16-Sep-2015

18 views

Category:

Documents


1 download

DESCRIPTION

code projectAngular JS Shopping Cart using MVC and WCF Rest

TRANSCRIPT

  • Articles Web Development Applications & Tools General

    syed shanu, 25 May 2015 CPOL 22.5K 1.8K 83Angular JS Shopping Cart using MVC and WCF Rest

    This article explains in detail how to create a simple Online Shopping Cart using AngularJS and WCF Rest Service.

    Download source - 8.7 MB

    IntroductionYou can also view my previous articles related to AngularJs using MVC and WCF REST Service.

    http://www.codeproject.com/Articles/893821/MVC-AngularJS-and-WCF-Rest-Service-For-Mind-Readerhttp://www.codeproject.com/Articles/988680/Angular-JS-Filter-Sorting-and-Animation-using-MVC

    This article will explain in detail how to create an simple Online Shopping Cart using Angular JS and WCF Rest Service. This article will explain:1. How to create a WCF Rest service and retrieve and insert data from a database.2. How to install the Angular JS Package into a MVC application.3. How to upload Image to our root folder using AngularJs and MVC.4. Select and Insert Item Details From database using AngularJS and WCF Rest5. How to use a WCS service in Angular JS to create our own simple Online Shopping Application which Includes.

    Display Items with Filter and sorting options.Select and Add Items to Shopping Cart.Display Total Price, Total Qty and Grand Price Total in Shopping Cart.Upload Image to Server root folderInsert and select data from database.Display Shopping cart Details.

    Note: the prerequisites are Visual Studio 2013 (if you don't have Visual Studio 2013, you can download it from the Microsoft website at http://www.visualstudio.com/en-us/products/visual-studio-community-vs ).

    Here we can see some basics and reference links for Windows Communication Foundation (WCF). WCF is a framework for building service-oriented applications.

    Service-oriented application: Using this protocol the service can be shared and used over a network.For example let's consider now we are working on a project and we need to create some common database function and those functions need to be used in multiple projectsand the projects are in multiple places and connected via a network such as the internet.In this case we can create a WCF service and we can write all our common database functions in our WCF service class. We can deploy our WCF in IIS and use the URL inour application to do DB functions. In the code part let's see how to create a WCF REST service and use it in our AngularJS application.

    If you are interested in reading more details about WCF then kindly go to this link.

    AngularJS

    4.85 (41 votes)

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    1 de 25 26-05-2015 13:52

  • We might be be familiar with what is Model, View and View Model (MVVM) and Model, View and Controller (MVC) are. AngularJS is a JavaScript framework that is purelybased on HTML CSS and JavaScript .Similar to the MVC and MVVM patterns AngularJS uses the Model, View and Whatever (MVW) pattern.In our example I have used Model, View and Service. In the code part let's see how to Install and create AngularJS in our MVC application.

    Using the code1) Create Database and Tablewe will create a ItemDetails table under the Database ShoppingDB. The following is the script to create a database, table and sample insert query. Run this script in your SQLServer. I have used SQL Server 2012.

    -- =============================================

    -- Author : Shanu -- Create date : 2015-03-20 -- Description : To Create Database,Table and Sample Insert Query -- Latest -- Modifier : Shanu -- Modify date : 2015-03-20

    -- =============================================--Script to create DB,Table and sample Insert data

    USE MASTERGO

    -- 1) Check for the Database Exists .If the database is exist then drop and create new DB

    IF EXISTS (SELECT [name] FROM sys.databases WHERE [name] = 'ShoppingDB' )

    DROP DATABASE ShoppingDB

    GO

    CREATE DATABASE ShoppingDB

    GO

    USE ShoppingDB

    GO

    -- 1) //////////// ItemDetails table

    -- Create Table ItemDetails,This table will be used to store the details like Item Information

    IF EXISTS ( SELECT [name] FROM sys.tables WHERE [name] = 'ItemDetails' )

    DROP TABLE ItemDetails

    GO

    CREATE TABLE ItemDetails

    ( Item_ID int identity(1,1), Item_Name VARCHAR(100) NOT NULL, Item_Price int NOT NULL, Image_Name VARCHAR(100) NOT NULL, Description VARCHAR(100) NOT NULL, AddedBy VARCHAR(100) NOT NULL,CONSTRAINT [PK_ItemDetails] PRIMARY KEY CLUSTERED ( [Item_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]

    GO

    -- Insert the sample records to the ItemDetails Table

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('Access Point','Access Point for Wifi use',950,'AccessPoint.png','Shanu')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('CD','Compact Disk',350,'CD.png','Afraz')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('Desktop Computer','Desktop Computer',1400,'DesktopComputer.png','Shanu')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('DVD','Digital Versatile Disc',1390,'DVD.png','Raj')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('DVD Player','DVD Player',450,'DVDPlayer.png','Afraz')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('Floppy','Floppy',1250,'Floppy.png','Mak')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('HDD','Hard Disk',950,'HDD.png','Albert')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('MobilePhone','Mobile Phone',1150,'MobilePhone.png','Gowri')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('Mouse','Mouse',399,'Mouse.png','Afraz')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('MP3 Player ','Multi MediaPlayer',897,'MultimediaPlayer.png','Shanu')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('Notebook','Notebook',750,'Notebook.png','Shanu')

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    2 de 25 26-05-2015 13:52

  • Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('Printer','Printer',675,'Printer.png','Kim')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('RAM','Random Access Memory ',1950,'RAM.png','Jack')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('Smart Phone','Smart Phone',679,'SmartPhone.png','Lee')

    Insert into ItemDetails(Item_Name,Description,Item_Price,Image_Name,AddedBy) values('USB','USB',950,'USB.png','Shanu')

    select * from ItemDetails

    2) Create WCF REST Service:Open Visual Studio 2013 then select "File" -> "New" -> "Project..." then select WCF Service Application then select your project path and name your WCF service and click OK.

    Once we have created our WCF Service we can see IService.CS and Service1.svc in the Solution Explorer as in the following.

    IService.CS: In IService.CS we can see 3 Contracts by defaul.[ServiceContract]: Describes the methods or any operations available for the service. The Service Contract is an interface and methods can be declared insidethe Service Interface using the Operation Contract attribute.[OperationContract]: is similar to the web service [WEBMETHOD].[DataContract]: describes the data exchange between the client and the service.[ServiceContract]

    The following code will be automatically created for all the IService.CS files. We can change and write our own code here.

    public interface IService1 {

    [OperationContract] string GetData(int value);

    [OperationContract] CompositeType GetDataUsingDataContract(CompositeType composite);

    // TODO: Add your service operations here }

    // Use a data contract as illustrated in the sample below to add composite types to service operations.

    [DataContract] public class CompositeType {

    bool boolValue = true; string stringValue = "Hello ";

    [DataMember] public bool BoolValue

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    3 de 25 26-05-2015 13:52

  • { get { return boolValue; } set { boolValue = value; } }

    [DataMember] public string StringValue { get { return stringValue; } set { stringValue = value; } } }

    Data ContractIn our example we need to get all Item Details from the database, so I have created a Data Contracts, itemDetailsDataContract Here we can see we have deceleratedour entire Table column name as Data Member.

    public class shoppingCartDataContract { [DataContract] public class itemDetailsDataContract { [DataMember] public string Item_ID { get; set; }

    [DataMember] public string Item_Name { get; set; }

    [DataMember] public string Description { get; set; }

    [DataMember] public string Item_Price { get; set; }

    [DataMember] public string Image_Name { get; set; }

    [DataMember] public string AddedBy { get; set; } } }

    Service ContractIn the Operation Contract we can see WebInvoke and WebGet for retrieving the data from the database in the REST Serivce.

    RequestFormat = WebMessageFormat.Json,

    ResponseFormat = WebMessageFormat.Json,

    Here we can see both of the request and response formats. Here I have used the JavaScript Object Notation (JSON) format.JSON is a lightweight data interchange format.UriTemplate: Here we provide our Method Name.

    Here I have declared the 3 methods GetOrderMaster, SearchOrderMaster and OrderDetails . The GetOrderMaster method gets the Order Master records. In theOrderDetails method the Order_No parameter provides the order detail filter by Order Number.Here I have declared GetItemDetails method and used to get the details of all Items from the Database. And addItemMaster method and used to get the Insert new Item todatabase.

    [ServiceContract] public interface IService1 {[OperationContract] [WebInvoke(Method = "GET",

    RequestFormat = WebMessageFormat.Json,

    ResponseFormat = WebMessageFormat.Json,

    UriTemplate = "/GetItemDetails/")]

    List GetItemDetails();

    // TODO: Add your service operations here

    // to Insert the Item Master

    [OperationContract]

    [WebInvoke(Method = "POST",

    RequestFormat = WebMessageFormat.Json,

    ResponseFormat = WebMessageFormat.Json,

    UriTemplate = "/addItemMaster")]

    bool addItemMaster(shoppingCartDataContract.itemDetailsDataContract itemDetails);

    }

    Iservice.Cs -> Complete Source Codeusing System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    4 de 25 26-05-2015 13:52

  • using System.ServiceModel.Web;using System.Text;

    namespace ShanuSchoppingCart_WCF{

    [ServiceContract] public interface IService1 {

    [OperationContract] [WebInvoke(Method = "GET",

    RequestFormat = WebMessageFormat.Json,

    ResponseFormat = WebMessageFormat.Json,

    UriTemplate = "/GetItemDetails/")]

    List GetItemDetails();

    // to Insert the Item Master

    [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/addItemMaster")] bool addItemMaster(shoppingCartDataContract.itemDetailsDataContract itemDetails); }

    public class shoppingCartDataContract {

    [DataContract] public class itemDetailsDataContract {

    [DataMember] public string Item_ID { get; set; }

    [DataMember] public string Item_Name { get; set; }

    [DataMember] public string Description { get; set; }

    [DataMember] public string Item_Price { get; set; }

    [DataMember] public string Image_Name { get; set; }

    [DataMember] public string AddedBy { get; set; } }

    }

    }

    Add Database using ADO.NET Entity Data ModelRight-click your WCF project and select Add New Item tehn select ADO.NET Entity Data Model and click Add.

    Select EF Designer from Database and click next.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    5 de 25 26-05-2015 13:52

  • Click New Connection

    Here we can select our Database Server Name and enter your DB server SQL Server Authentication User ID and Password. We have already created our data base asShoppingDB so we can select the database and click ok.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    6 de 25 26-05-2015 13:52

  • Click next and select our tables need to be used and click finish.Here we can see now we have created our shanuItemDetailsModel1.

    Service1.SVCService.SVC.CS implements the IService Interface and overrides and defines all the methods of the Operation Contract. For For example here we can see I haveimplemented the IService1 in the Service1 class. Created the object for our Entity model and in GetToyDetails using a LINQ.

    public class Service1 : IService1

    {

    ShanuShoppingDBEntities OME;

    public Service1() {

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    7 de 25 26-05-2015 13:52

  • OME = new ShanuShoppingDBEntities(); }

    // This method is get the Toys details from Db and bind to list using the Linq query

    public List GetItemDetails() {

    var query = (from a in OME.ItemDetails select a).Distinct();

    List ItemDetailsList = new List();

    query.ToList().ForEach(rec => { ItemDetailsList.Add(new shoppingCartDataContract.itemDetailsDataContract {

    Item_ID = Convert.ToString(rec.Item_ID), Item_Name = rec.Item_Name, Description=rec.Description, Item_Price = Convert.ToString(rec.Item_Price), Image_Name = rec.Image_Name, AddedBy = rec.AddedBy });

    });

    return ItemDetailsList; }

    Service.SVC.CS - Complete Source Code

    using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.ServiceModel.Web;using System.Text;using ShanuSchoppingCart_WCF.Module;

    namespace ShanuSchoppingCart_WCF{ public class Service1 : IService1 { ShanuShoppingDBEntities OME; public Service1() { OME = new ShanuShoppingDBEntities(); }

    public List GetItemDetails() {

    var query = (from a in OME.ItemDetails select a).Distinct();

    List ItemDetailsList = new List();

    query.ToList().ForEach(rec => { ItemDetailsList.Add(new shoppingCartDataContract.itemDetailsDataContract { Item_ID = Convert.ToString(rec.Item_ID), Item_Name = rec.Item_Name, Description=rec.Description, Item_Price = Convert.ToString(rec.Item_Price), Image_Name = rec.Image_Name, AddedBy = rec.AddedBy });

    });

    return ItemDetailsList; }

    public bool addItemMaster(shoppingCartDataContract.itemDetailsDataContract ItmDetails) { try { ItemDetails itm = OME.ItemDetails.Create(); itm.Item_Name = ItmDetails.Item_Name; itm.Description=ItmDetails.Description; itm.Item_Price = Convert.ToInt32(ItmDetails.Item_Price); itm.Image_Name = ItmDetails.Image_Name; itm.AddedBy = ItmDetails.AddedBy; OME.ItemDetails.Add(itm); OME.SaveChanges(); } catch (Exception ex) { throw new FaultException (ex.Message); } return true; } } }

    Web.Config:In WCF project Web.Config

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    8 de 25 26-05-2015 13:52

  • Change the1) Change to

    2) Replace the to

    Run WCF Service: -> Now we have created our WCF Rest service, let's run and test our service. In our service URL we can add our method name and we can see the JSONresult data from the database.

    Create MVC Web ApplicationSo now we have completed our WCF and now it's time to create our MVC AngularJS application.We can add a new project to our existing project and create a new MVC webapplication as in the following.Right-click the project in the solution and click Add New Project then enter your project name and click "OK".Select MVC and click "OK".

    Now we have created our MVC application and it's time to add our WCF Service and install the AngularJS package to our solution.

    Add WCF Service: Right-click MVC Solution and click Add then click Service Reference.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    9 de 25 26-05-2015 13:52

  • Enter your WCF URL and click GO .here my WCF URL is http://localhost:4191/Service1.svc/Add your name and click ok.Now we have successfully added our WCF Service to our MVC Application.

    Steps to Install Angular JS packageRight Click your MVC project and Click-> Manage NuGet Packages

    Select Online and Search for Angular JS. Select the AngularJs and click Install.

    Now we have Installed the AngularJS package into our MVC Project. Now let's create our AngularJs.Modules.jsControllers.jsshoppingController.jsServices.js

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    10 de 25 26-05-2015 13:52

  • Note here I have created 2 different AngularJs controller as Controllers.js and shoppingController.js .I will be using shoppingController.js for Shopping Cart Page andController.js for New Item Add and Upload new Item Image to root folderProcedure to Create AngularJs Script FilesRight-click the Script folder and create your own folder to create the AngularJs Model/Controller and Service JavaScript. In your script folder add three JavaScript files andname them Modules.js, Controllers.js and Services.js as in the following.

    Modules.js: Here we add the reference to the Angular.js javascript.In our application we are going to use AngularJs FileUpload from our MVC Controller. In order to use theFile Upload we need to add the angular-file-upload.js and angular-file-upload.min.js .we give our module name as RESTClientModule .

    ///

    ///

    ///

    ///

    ///

    ///

    var app;

    (function () {

    app = angular.module("RESTClientModule", []);

    })();

    Services.js: Here we provide a name for our service and we use this name in controllers.js. Here for the Angular service I have given the name "AngularJs_WCFService".You can give your own name but be careful of changing the name in Controllers.js. Angularjs can receive json data, here we can see I have provided our WCS service URL toget the Item details as JSON data. To insert Item information result to Database we pass the data as JSON data to our WCF insert method as parameter.

    ///

    ///

    ///

    ///

    ///

    app.service("AngularJs_WCFService", function ($http) {

    //Get Order Master Records

    this.GetItemDetails = function () {

    return $http.get("http://localhost:4191/Service1.svc/GetItemDetails/");

    };

    //To Save the Item Details with Image Name to the Database

    this.post = function (ItemDetails) {

    var request = $http({

    method: "post",

    url: "http://localhost:4191/Service1.svc/addItemMaster",

    data: ItemDetails

    });

    return request;

    }

    });

    AngularJs Controller: In this application I have created 2 different controllers which to be used for Item Master Insert page and for Shopping Cart Page we will see one by onehere.shoppingController.js: Here we add the reference to the Angular.js JavaScript and our Module.js and Services.js. Same like Services, for the controller I have given the nameas " AngularJs_ShoppingFController".

    In Controller I have performed all the business logic and return the data from WCF JSON data to our MVC html page. Each variable and method before I have added acomment which will explain its each part .1) Variable declarations:First I declared all the local Variable which needs to be used and current date and store the date using $scope.date.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    11 de 25 26-05-2015 13:52

  • 2) Methods:GetItemDetails()

    This method is used to get all the details of Items from the JSON and bind the result to the Shopping page.3 $scope.showImage = function (imageNm, ItemID, ItemName, ItemPrize, ItemDescription){This method used to get all the details when user clicks on Image Inside the Grid and display the details to add items to the Cart.4) $scope.showMyCart = function ()This method will hide the detail table Row and display the Cart Items.5) function getItemTotalresult()This method is to calculate the TotalPrice, TotalQty and Grand Total price.6) function addItemstoCart()This method will add the Items to the cart and if the Item already exist then the Qty will be incremnet by 1.7) $scope.removeFromCart = function (index)This method is to remove the Item from the cart. Each Item inside the Cart can be removed. From our MVC html page we pass the Row Index no to this method to remove theItem from the Array.shoppingController.js full source code///

    ///

    ///

    ///

    ///

    ///

    app.controller("AngularJs_ShoppingFController", function ($scope, $http, $timeout, $rootScope, $window, AngularJs_WCFService) {

    $scope.date = new Date();

    // To set and get the Item Details values

    var firstbool = true;

    $scope.Imagename = "";

    $scope.Item_ID = "";

    $scope.Item_Name = "";

    $scope.Description = "";

    $scope.Item_Price = "0";

    $scope.txtAddedBy = "";

    // Item List Arrays.This arrays will be used to Add and Remove Items to the Cart.

    $scope.items = [];

    //to display the Table for Shopping cart Page.

    $scope.showItem = false;

    $scope.showDetails = false;

    $scope.showCartDetails = false;

    //This variable will be used to Increment the item Quantity by every click.

    var ItemCountExist = 0;

    //This variable will be used to calculate and display the Cat Total Price,Total Qty and GrandTotal result in Cart

    $scope.totalPrice = 0;

    $scope.totalQty = 0;

    $scope.GrandtotalPrice = 0;

    // This is publich method which will be called initially and load all the item Details.

    GetItemDetails();

    //To Get All Records

    function GetItemDetails() {

    $scope.showItem = false;

    $scope.showDetails = true;

    $scope.showCartDetails = false;

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    12 de 25 26-05-2015 13:52

  • var promiseGet = AngularJs_WCFService.GetItemDetails();

    promiseGet.then(function (pl) {

    $scope.getItemDetailsDisp = pl.data

    },

    function (errorPl) {

    });

    }

    //This method used to get all the details when user clicks on Image Inside the Grid and display the details to add items to the Cart

    $scope.showImage = function (imageNm, ItemID, ItemName, ItemPrize, ItemDescription) {

    $scope.Imagename = imageNm;

    $scope.Item_ID = ItemID;

    $scope.Item_Name = ItemName;

    $scope.Description = ItemDescription;

    $scope.Item_Price = ItemPrize;

    $scope.showItem = true;

    $scope.showDetails = true;

    $scope.showCartDetails = false;

    ItemCountExist = 0;

    }

    //This method will hide the detail table Row and display the Cart Items

    $scope.showMyCart = function () {

    if ($scope.items.length > 0)

    {

    alert("You have added " +$scope.items.length + " Items in Your Cart !");

    $scope.showItem = false;

    $scope.showDetails = false;

    $scope.showCartDetails = true;

    }

    else {

    alert("Ther is no Items In your Cart.Add Items to view your Cart Details !")

    }

    }

    //This method will hide the detail table Row and display the Cart Items

    $scope.showCart = function () {

    //alert(shoppingCartList.length);

    $scope.showItem = true;

    $scope.showDetails = false;

    $scope.showCartDetails = true;

    addItemstoCart();

    }

    // This method is to calculate the TotalPrice,TotalQty and Grand Total price

    function getItemTotalresult() {

    $scope.totalPrice = 0;

    $scope.totalQty = 0;

    $scope.GrandtotalPrice = 0;

    for (count = 0; count < $scope.items.length; count++) {

    $scope.totalPrice += parseInt($scope.items[count].Item_Prices );

    $scope.totalQty += ($scope.items[count].ItemCounts);

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    13 de 25 26-05-2015 13:52

  • $scope.GrandtotalPrice += ($scope.items[count].Item_Prices * $scope.items[count].ItemCounts);

    }

    }

    //This method will add the Items to the cart and if the Item already exist then the Qty will be incremnet by 1.

    function addItemstoCart() {

    if ($scope.items.length > 0)

    {

    for (count = 0; count < $scope.items.length; count++) {

    if ($scope.items[count].Item_Names == $scope.Item_Name) {

    ItemCountExist = $scope.items[count].ItemCounts + 1;

    $scope.items[count].ItemCounts = ItemCountExist;

    }

    } }

    if (ItemCountExist

  • GetItemDetails()

    This method is used to get all the details of Items from the JSON and bind the result to the Shopping page.3) $scope.ChechFileValidThis method is used the check the attached image file is valid or not. If the image file is not valid display the error message.4) $scope.SaveFile = function ()In this method pass the Image File to UploadFile method and once the Image is uploaded successfully to our root folder the Item details will be inserted to database.6) fac.UploadFile = function (file) In this method using $http.post we pass our Image file to MVC Controller and our HTTPost method as below

    $http.post("/shanuShopping/UploadFile", formData,

    {

    withCredentials: true,

    headers: { 'Content-Type': undefined },

    transformRequest: angular.identity

    })

    Note $http.post() we need to give our MVC Controller name and our HTTPost method name, where we upload the image to our root folder .Below is the code which isused to upload image in our MVC Controller.

    [HttpPost]

    public JsonResult UploadFile()

    {

    string Message, fileName;

    Message = fileName = string.Empty;

    bool flag = false;

    if (Request.Files != null)

    {

    var file = Request.Files[0];

    fileName = file.FileName;

    try

    {

    file.SaveAs(Path.Combine(Server.MapPath("~/Images"), fileName));

    Message = "File uploaded";

    flag = true;

    }

    catch (Exception)

    {

    Message = "File upload failed! Please try again";

    }

    }

    return new JsonResult { Data = new { Message = Message, Status = flag } };

    }

    MVC Controller WEB Method:Controller.js full source code///

    ///

    ///

    ///

    ///

    ///

    app.controller("AngularJs_WCFController", function ($scope, $timeout, $rootScope, $window, AngularJs_WCFService, FileUploadService) {

    $scope.date = new Date();

    // To set and get the Item Details values

    var firstbool = true;

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    15 de 25 26-05-2015 13:52

  • $scope.Imagename = "";

    $scope.Item_ID = "0";

    $scope.Item_Name = "";

    $scope.Description = "";

    $scope.Item_Price = "0";

    $scope.txtAddedBy = "";

    // This is publich method which will be called initially and load all the item Details.

    GetItemDetails();

    //To Get All Records

    function GetItemDetails() {

    var promiseGet = AngularJs_WCFService.GetItemDetails();

    promiseGet.then(function (pl) {

    $scope.getItemDetailsDisp = pl.data

    },

    function (errorPl) {

    });

    }

    //Declarationa and Function for Image Upload and Save Data

    //--------------------------------------------

    // Variables

    $scope.Message = "";

    $scope.FileInvalidMessage = "";

    $scope.SelectedFileForUpload = null;

    $scope.FileDescription_TR = "";

    $scope.IsFormSubmitted = false;

    $scope.IsFileValid = false;

    $scope.IsFormValid = false;

    //Form Validation

    $scope.$watch("f1.$valid", function (isValid) {

    $scope.IsFormValid = isValid;

    });

    // THIS IS REQUIRED AS File Control is not supported 2 way binding features of Angular

    // ------------------------------------------------------------------------------------

    //File Validation

    $scope.ChechFileValid = function (file) {

    var isValid = false;

    if ($scope.SelectedFileForUpload != null) {

    if ((file.type == 'image/png' || file.type == 'image/jpeg' || file.type == 'image/gif') && file.size

  • $scope.selectFileforUpload = function (file) {

    var files = file[0];

    $scope.Imagename = files.name;

    alert($scope.Imagename);

    $scope.SelectedFileForUpload = file[0];

    }

    //----------------------------------------------------------------------------------------

    //Save File

    $scope.SaveFile = function () {

    $scope.IsFormSubmitted = true;

    $scope.Message = "";

    $scope.ChechFileValid($scope.SelectedFileForUpload);

    if ($scope.IsFormValid && $scope.IsFileValid) {

    FileUploadService.UploadFile($scope.SelectedFileForUpload).then(function (d) {

    var ItmDetails = {

    Item_ID:$scope.Item_ID,

    Item_Name: $scope.Item_Name,

    Description: $scope.Description,

    Item_Price: $scope.Item_Price,

    Image_Name: $scope.Imagename,

    AddedBy: $scope.txtAddedBy

    };

    var promisePost = AngularJs_WCFService.post(ItmDetails);

    promisePost.then(function (pl) {

    alert(p1.data.Item_Name);

    GetItemDetails();

    }, function (err) {

    // alert("Data Insert Error " + err.Message);

    });

    alert(d.Message + " Item Saved!");

    $scope.IsFormSubmitted = false;

    ClearForm();

    }, function (e) {

    alert(e);

    });

    }

    else {

    $scope.Message = "All the fields are required.";

    }

    };

    //Clear form

    function ClearForm() {

    $scope.Imagename = "";

    $scope.Item_ID = "0";

    $scope.Item_Name = "";

    $scope.Description = "";

    $scope.Item_Price = "0";

    $scope.txtAddedBy = "";

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    17 de 25 26-05-2015 13:52

  • angular.forEach(angular.element("input[type='file']"), function (inputElem) {

    angular.element(inputElem).val(null);

    });

    $scope.f1.$setPristine();

    $scope.IsFormSubmitted = false;

    }

    })

    .factory('FileUploadService', function ($http, $q) {

    var fac = {};

    fac.UploadFile = function (file) {

    var formData = new FormData();

    formData.append("file", file);

    var defer = $q.defer();

    $http.post("/shanuShopping/UploadFile", formData,

    {

    withCredentials: true,

    headers: { 'Content-Type': undefined },

    transformRequest: angular.identity

    })

    .success(function (d) {

    defer.resolve(d);

    })

    .error(function () {

    defer.reject("File Upload Failed!");

    });

    return defer.promise;

    }

    return fac;

    //---------------------------------------------

    //End of Image Upload and Insert record

    });

    Reference link for AngularJs File upload using MVC http://dotnetawesome.blogspot.in/2015/01/how-to-upload-files-with-angularjs-and-mvc4.htmlSo now we have created our Angular Js Module /Controller and Service. So what is next?So now we have created our Angular Js Module, Controller and Service. So what is next?

    Create MVC Control and View to display our result.Add ControllerRight-click Controllers then select Add Controller then select MVC 5 Controller Empty then click Add.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    18 de 25 26-05-2015 13:52

  • Change the Controller name and here I have given it the name shanuShoppingController and click OK.

    Add ViewRight-click on the Controller Index and click Add View.MVC Controller CS File: Here we can in my MVC Controller, I have created 2 ActionResult one is Index and another one is ItemMaster .In Index I have created a View asIndex and this page is used to display our Shopping Cart Details with items. In ItemMaster I have created a View as ItemMaster and this page is used to display Item Details,Add new Item and Upload image for an Item. Next we have HttpPost UploadFile() method which is used to upload an Image file.

    public class shanuShoppingController : Controller {

    // GET: shanuShopping

    public ActionResult Index() { return View(); }

    public ActionResult ItemMaster() { return View(); }

    [HttpPost] public JsonResult UploadFile() { string Message, fileName;

    Message = fileName = string.Empty;

    bool flag = false;

    if (Request.Files != null)

    {

    var file = Request.Files[0];

    fileName = file.FileName;

    try

    {

    file.SaveAs(Path.Combine(Server.MapPath("~/Images"), fileName));

    Message = "File uploaded";

    flag = true;

    }

    catch (Exception)

    {

    Message = "File upload failed! Please try again";

    }

    } return new JsonResult { Data = new { Message = Message, Status = flag } }; } }

    Run your programHere we can see that when I run the program, first I display the Order Master records in the table. You can see in menu I have Shanu Shopping Cart and Item master menuitem. First we see for Shanu Shopping Cart menu. When user clicks on this menus will display the Index.html(View) .1) Shanu Shopping Cart Menu: By default I will display all the item details. User can use filter by Item Code, Item Name, and Description and by User Name to search theirItem from the list. User can also do sort items by clicking on the Column Header.Click for my Shopping Cart Items This method is to display the users Shopping cart details. If there is no item for the user it will display the alert message.Add items to Cart- To add items to cart click on Item Image.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    19 de 25 26-05-2015 13:52

  • Add item to Cart - When user clicks on each Image from the Item list. I will display the item details to add the selected Item to Cart as below image.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    20 de 25 26-05-2015 13:52

  • Cart Details- When user clicks on Add to Cart. I will display the cart details as below. When user add Item for rst time then I will display the Qty as 1.Toincrement the Qty user can click again to the same item. Here I will check for Item already exists in the Shopping cart. If its exist in cart then I willincrement the Qty and if the item is not available then I will add the item to shopping cart list.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    21 de 25 26-05-2015 13:52

  • Cart Complete details.

    2) Item Master Menu: By default I will display all the item details. User can use filter by Item Code, Item Name, and Description and by User Name to search their Item fromthe list. User can also do sort items by clicking on the Column Header.User can add new Item here with image upload.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    22 de 25 26-05-2015 13:52

  • Browse image and upload to the root folder and save the item to data base.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    23 de 25 26-05-2015 13:52

  • syed shanuTeam LeaderIndia

    His Blog

    Syed Shanu is basically from Madurai, Tamil Nadu, India.He was been working in South Korea for past 8 years. He started programming with Basic Language and C languagefrom his high school at 1999.In 2005 he completed his Master of Computer Application. He started his working Career from Dec 2004 with ASP.

    He has 9+ years of Experience in Microsoft Technologies.

    His work experience with Language and Technology starts from ASP and SQL Server, Then VB.NET and C# for PDA Application, Touch Screen Application Development,Desktop Application, ASP.NET Web Application Development, MVC and WPF.

    You can extend this application as per your requirements and add more functionality like ,user management, Shopping cart payment details and etc.Supported Browsers: Chrome and Firefox.

    HistoryshanuShoppingCartSRC.zip - 2015/05/06

    LicenseThis article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

    Share

    About the Author

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    24 de 25 26-05-2015 13:52

  • Permalink | Advertise | Privacy | Terms of Use | MobileWeb01 | 2.8.150520.1 | Last Updated 26 May 2015 Selecione o idioma

    Article Copyright 2015 by syed shanuEverything else Copyright CodeProject, 1999-2015

    He loves to work with Microsoft technology as he started to work on .Net Frame Work version from 1.0 to 4.5.

    He had worked with HMI (Human Machine Interface) programs like PLC, Nutrunner Tools, and Sensor programs, RFID programs, Barcode programs and etc.

    He also worked with Dotnetnuke .

    He had worked with Projects like, Restaurant management with PDA AND Desktop Development, Hospital management with PDA, Desktop and Web development, OnlineShopping Cart for web, Inventory Management for web, Asset Management for desktop, SPC for Desktop, Factory Automation for Desktop, MES for both Web and Desktop,ERP for Both Web and Desktop.

    He usually uses his free time to spend with his Family and go outing. He loves photography and Hiking.

    Hes a Positive thinker, he always believes in Software field there is no problems with solution.

    Follow on Twitter Google LinkedIn

    Comments and Discussions Visit http://www.codeproject.com/Articles/988648/Angular-JS-Shopping-Cart-using-MVC-and-WCF-Rest to post and view comments on this article, or click here to get

    a print view with messages.

    Angular JS Shopping Cart using MVC and WCF... http://www.codeproject.com/Articles/988648/An...

    25 de 25 26-05-2015 13:52