// POST api/<controller>
        public async Task Post(PrLinesViewModel value)
        {
            var nh   = new NHibernateUserStore();
            var nhps = new NHibernatePRStore();
            var nhcs = new NHibernateNonCatalogStore();
            var user = nh.FindByStampAsync(value.SecurityStamp);

            if (user != null)
            {
                var       nhis = new NHibernateItemStore();
                ItemModel item = null;
                NonCatalogItemHeadModel nonCatalog = null;
                if (value.itemType == "Catalog")
                {
                    item = await nhis.FindItemByIdAsync(value.Id);
                }
                else
                {
                    nonCatalog = await nhcs.GetNonCatalogAsync(value.Id);
                }
                var PrLines = new PRLinesModel {
                    Item       = item,
                    NonCatalog = nonCatalog,
                    Quantity   = value.Quantity,
                    CreatedBy  = user.Result
                };
                try {
                    await nhps.CreatePRLinesAsync(PrLines);
                } catch (Exception e) {
                    var a = e.Message;
                }
            }
        }
 public async Task <long> CreateNonCatalogHeadAsync(NonCatalogItemHeadModel Head)
 {
     using (var db = HibernateSession.GetCurrentSession()) {
         using (var tx = db.BeginTransaction()) {
             db.SaveOrUpdate(Head);
             tx.Commit();
             db.Flush();
             return(Head.Id);
         }
     }
 }
        public async Task <long> Post(NonCatalogViewModel value)
        {
            const long PurchaserHead = 6;

            var nhnch            = new NHibernateNonCatalogStore();
            var user             = new NHibernateUserStore();
            var nnc              = new NHibernateNonCatalogStore();
            var supplierStore    = new NHibernateISupplierStore();
            var subcategoryStore = new NHibernateCategoryStore();
            var company          = new NHibernateCompanyStore();
            var createdby        = await user.FindByStampAsync(value.SecurityStamp);

            var nonCatalog = await nnc.GetNonCatalogAsync(value.Id);

            if (nonCatalog == null)
            {
                nonCatalog = new NonCatalogItemHeadModel();
            }
            nonCatalog.Name        = value.Name;
            nonCatalog.Analysis    = value.Analysis;
            nonCatalog.SubCategory = await subcategoryStore.FindSubCategoryByIdAsync(value.SubCategoryId);

            nonCatalog.Requestor = await company.GetEmployeeAsync(value.RequestorId);

            nonCatalog.CreatedBy = createdby;
            nonCatalog.Approver  = await company.GetPositionByIdAsync(PurchaserHead);

            for (var line = 0; line < nonCatalog.Lines.Count; line++)
            {
                if (!value.Lines.Any(x => x.Id == nonCatalog.Lines.ElementAt(line).Id))
                {
                    nonCatalog.Lines.ElementAt(line).DeleteTime = DateTime.UtcNow;
                }
            }
            foreach (var line in value.Lines)
            {
                if (nonCatalog.Lines.Any(x => x.Id == line.Id) && line.Id != 0)
                {
                    continue;
                }
                var supplier = await supplierStore.FindSupplierByIdAsync(line.SupplierId);

                string tempSupplier = null;
                if (supplier == null)
                {
                    tempSupplier = line.TempSupplier;
                }

                var nonCatalogLine = new NonCatalogItemLinesModel {
                    Selected     = line.Selected,
                    Supplier     = supplier,
                    Price        = line.Price,
                    Description  = line.Description,
                    Quantity     = line.Quantity,
                    UOM          = line.UOM,
                    Discount     = line.Discount,
                    TotalAnount  = line.TotalAnount,
                    Availability = line.Availability,
                    Terms        = line.Terms,
                    Brand        = await supplierStore.FindBrandByIdAsync(line.BrandId),
                    CreatedBy    = createdby,
                    TempSupplier = tempSupplier
                };
                nonCatalog.Lines.Add(nonCatalogLine);
            }
            if (value.Approved)
            {
                nonCatalog.ApprovedBy   = createdby;
                nonCatalog.DateApproved = DateTime.UtcNow;
            }
            return(await nnc.CreateNonCatalogHeadAsync(nonCatalog));
        }