//
 // GET: /Purchase/Create
 public ActionResult Create()
 {
     var header = new PurchaseHeaderModel();
     var detail = new List<PurchaseDetailModel>();
     header.purchasedetailmodel=detail;
     header.VendorList = new SelectList(purcService.GetVendors(), "BusinessEntityID", "Name");
     header.ShipMethodList  = new SelectList(purcService.GetShipMethods(), "ShipMethodID", "Name");
     //header.VendorID = header.VendorList.Select();
     return View(header);
 }
        //
        // GET: /Purchase/Create
        public ActionResult Create()
        {
            var header = new PurchaseHeaderModel();
            var detail = new List<PurchaseDetailModel>();
            header.purchasedetailmodel=detail;
            header.VendorList = new SelectList(purcService.GetVendors(), "MasterID", "MasterName");
            header.ShipMethodList = new SelectList(purcService.GetShipMethods(), "MasterID", "MasterName");

               // purcOrder.pro
            return View(header);
        }
        public void Create_Post_Action_Returns_Jason_WithInValid_Model()
        {
            //arrange
            var model = new PurchaseHeaderModel();

            _purchasecontroller.ModelState.AddModelError("Error in Model", "Error Message");
            //var exception= new ExceptionContext(_purchasecontroller.ControllerContext,new Exception("test message"));

            //act
            var result = _purchasecontroller.Create(model);
            dynamic data = result.Data;

            //assert

            Assert.AreEqual(data.Success, 0,"For invalid model Update / Insert should fails");
        }
        public JsonResult Create(PurchaseHeaderModel model )
        {
            try
            {
                if (ModelState.IsValid)
                {

                    // Perform Update
                    if (model.PurchaseOrderID > 0)
                    {

                        var CurrentHeader = Mapper.Map<PurchaseHeaderModel, IPurchaseHeader>(model);
                        var CurrentDetail = Mapper.Map<List<PurchaseDetailModel>, List<IPurchaseDetail>>(model.purchasedetailmodel.ToList());
                        CurrentHeader.purchaseDetail = CurrentDetail.AsQueryable();

                        purcService.UpdatePurchaseOrder(model.PurchaseOrderID, CurrentHeader);
                    }
                    //Perform Save
                    else
                    {
                        var CurrentHeader = Mapper.Map<PurchaseHeaderModel, IPurchaseHeader>(model);
                        //CurrentHeader.VendorID = model.VendorID;
                        var CurrentDetail = Mapper.Map<List<PurchaseDetailModel>, List<IPurchaseDetail>>(model.purchasedetailmodel.ToList());
                        CurrentHeader.purchaseDetail = CurrentDetail.AsQueryable();
                        purcService.AddPurchaseOrder(CurrentHeader);
                    }

                    // If Sucess== 1 then Save/Update Successfull else there it has Exception
                    return Json(new { Success = 1, PurchaseOrderId = model.PurchaseOrderID, ex = "" });
                }
            }
            catch (Exception ex)
            {
                // If Sucess== 0 then Unable to perform Save/Update Operation and send Exception to View as JSON
                return Json(new { Success = 0, ex = ex.Message.ToString() });
            }

            return Json(new { Success = 0, ex = new Exception("Unable to save").Message.ToString() });
        }
        public static PurchaseHeaderModel ValidModel()
        {
            PurchaseHeaderModel  modelHeader = new PurchaseHeaderModel();
            PurchaseDetailModel modelDetail = new PurchaseDetailModel();
            var header = new PurchaseHeaderModel
            {
                PurchaseOrderID = 0,
                VendorID = 1502,
                ShipMethodID = 1,
                EmployeeID = 1,
                Status = 1,
                Freight = 10,
                ModifiedDate = DateTime.Now.Date,
                OrderDate = DateTime.Now.Date,
                RevisionNumber = 1,
                ShipDate = DateTime.Now.Date,
                SubTotal = 100,
                TaxAmt = 50
            };

            var detail = new PurchaseDetailModel { PurchaseOrderDetailID = 0, PurchaseOrderID = 0, DueDate = DateTime.Now.Date, LineTotal = 10, ModifiedDate = DateTime.Now.Date, ProductID = 1, OrderQty = 10, ReceivedQty = 0, RejectedQty = 0, StockedQty = 0, UnitPrice = 10 };
            var dets = new List<PurchaseDetailModel>();
            dets.Add(detail);
            header.purchasedetailmodel = dets;

            return header;
        }