public ActionResult UpdateLaborInfoItem(string flagval, int?ViewID, int?StageID, bool?LaborTax, decimal?Hours)
        {
            if (flagval == "2")
            {
                var stageinfo = db.GetStageMasterEditInfoByID(StageID).FirstOrDefault();
                if (stageinfo != null)
                {
                    var subLabors = db.GetSubLaborInfoByMasterStageID(stageinfo.StageMasterID).ToList();
                    var Labors    = new StageModels.StageMasterEdit();
                    foreach (var sub in subLabors)
                    {
                        Labors.StageSubDetails.Add(new StageModels.StageDetails()
                        {
                            StageMasterID = stageinfo.StageMasterID,
                            SubStageID    = sub.SubID,
                            SubName       = sub.SubStage,
                            CostPerHour   = sub.Cost,
                            PricePerHour  = sub.Price,
                            Percent       = sub.Factor,
                            SellPerHour   = sub.Sell
                        });
                    }
                    ViewBag.Labors = Labors;
                    return(PartialView("_ItemLaborPartial", Labors));
                }
            }
            else
            {
                db.UpdateItemLabor(ViewID, StageID, DateTime.Now.Date, Hours);
                db.SaveChanges();
                return(Json(new { status = "success", ViewID = ViewID }));
            }

            return(Json(new { status = "ERROR" }));
        }
        public ActionResult Edit(StageModels.StageMasterEdit Model)
        {
            var errorList = new List <string>();

            if (ModelState.IsValid)
            {
                var stageMaster = new CoStagesMaster()
                {
                    StageMasterID      = Model.StageMasterID,
                    SiteCoID           = siteusercompanyid,
                    StageOrder         = Model.Order,
                    CostCodeID         = Model.CostCodeId,
                    StageMiscEquipAdjt = Model.MiscEquip,
                    StageMiscPartsAdjt = Model.MiscParts
                };
                repo.UpdateStageMaster(stageMaster);

                foreach (var price in Model.StageSubDetails)
                {
                    // price.Percent = price.Percent / 100;
                    var stagePricing = new CoStagesPricing()
                    {
                        StageMasterID    = price.StageMasterID,
                        StageSubID       = price.SubStageID ?? 0,
                        StageLaborCost   = price.CostPerHour,
                        StageLaborPrice  = price.PricePerHour,
                        StageLaborFactor = price.Percent / 100
                    };

                    repo.UpdateStagePricing(stagePricing);
                }

                return(Json(new { status = "success" }));
            }

            errorList.AddRange((from item in ModelState.Values
                                from error in item.Errors
                                select error.ErrorMessage).ToList()
                               );

            return(Json(new { status = "error", errors = errorList }));
        }
        public ActionResult Edit(int id)//stage master id
        {
            var stage = db.GetStageMasterEditInfoByID(id).FirstOrDefault();

            if (stage == null)
            {
                return(HttpNotFound());
            }

            var subLabors = db.GetSubLaborInfoByMasterStageID(id).ToList();

            var model = new StageModels.StageMasterEdit()
            {
                CostCodeId    = stage.CostCodeID,
                MiscEquip     = stage.MiscEqp,
                MiscParts     = stage.MiscParts,
                Order         = stage.Order,
                StageMasterID = stage.StageMasterID,
                StageName     = stage.Stage,
            };

            foreach (var sub in subLabors)
            {
                model.StageSubDetails.Add(new StageModels.StageDetails()
                {
                    StageMasterID = id,
                    SubStageID    = sub.SubID,
                    SubName       = sub.SubStage,
                    CostPerHour   = sub.Cost,
                    PricePerHour  = sub.Price,
                    Percent       = sub.Factor,
                    SellPerHour   = sub.Sell
                });
            }

            ViewBag.CostCodes = new SelectList(db.GetCoCostCodesBySiteCoID(siteusercompanyid).ToList(), nameof(GetCoCostCodesBySiteCoID_Result.CostCodeID), nameof(GetCoCostCodesBySiteCoID_Result.CostCode));

            return(View(model));
        }
        public ActionResult Details(int?id)
        {
            var data = db.GetItemInfoByMasterItemID(id).FirstOrDefault();

            if (data.Vendor != null)
            {
                ViewBag.Vendors = new SelectList(db.GetVendorsBySiteCoID(base.siteusercompanyid).ToList(), nameof(GetVendorsBySiteCoID_Result.ViewID), nameof(GetVendorsBySiteCoID_Result.Vendor), data.Vendor);
            }
            else
            {
                ViewBag.Vendors = new SelectList(db.GetVendorsBySiteCoID(base.siteusercompanyid).ToList(), nameof(GetVendorsBySiteCoID_Result.ViewID), nameof(GetVendorsBySiteCoID_Result.Vendor));
            }
            ViewBag.SalesUom  = new SelectList(db.GetSiteDataUom().ToList(), nameof(GetSiteDataUom_Result.ViewID), nameof(GetSiteDataUom_Result.Uom), data.SaleUom);
            ViewBag.OrderUom  = new SelectList(db.GetSiteDataUom().ToList(), nameof(GetSiteDataUom_Result.ViewID), nameof(GetSiteDataUom_Result.Uom), data.OrderUom);
            ViewBag.CostCodes = new SelectList(db.GetCoCostCodesBySiteCoID(siteusercompanyid).ToList(), nameof(GetCoCostCodesBySiteCoID_Result.CostCodeID), nameof(GetCoCostCodesBySiteCoID_Result.CostCode));
            var projectID = db.ProjectItems.Where(p => p.MasterItemID == id).Select(p => p.ProjectID).FirstOrDefault();

            ViewBag.CoStages = new SelectList(db.GetMasterStagesBySiteID(siteusercompanyid).ToList(), nameof(GetMasterStagesBySiteID_Result.ViewID), nameof(GetMasterStagesBySiteID_Result.Stage));
            var stage = db.GetStageMasterEditInfoByID(data.StageID).FirstOrDefault();

            if (stage != null)
            {
                var subLabors = db.GetSubLaborInfoByMasterItemID(id).ToList();
                var Labors    = new StageModels.StageMasterEdit();
                if (subLabors != null)
                {
                    foreach (var sub in subLabors)
                    {
                        Labors.StageSubDetails.Add(new StageModels.StageDetails()
                        {
                            StageMasterID = stage.StageMasterID,
                            SubStageID    = sub.SubID,
                            SubName       = sub.SubStage,
                            CostPerHour   = sub.Cost,
                            PricePerHour  = sub.Price,
                            Percent       = sub.Factor,
                            SellPerHour   = sub.Sell
                        });
                    }
                }
                ViewBag.Labors = Labors;
            }
            if (data == null)
            {
                return(HttpNotFound());
            }
            else
            {
                ViewBag.AcctItemID = data.AcctItemID;
            }
            int siteCoID = base.siteusercompanyid;

            qbModels = new QBModels();
            qbModels.SyncObjectsModel    = new QBSyncdto();
            qbModels.OAuthorizationModel = new QBAuthorizationdto();
            qbModels.IsReadySync         = false;
            var oAuthModel = new QBOAuthService(qbModels.OAuthorizationModel).IsTokenAvailable(this, siteusercompanyid);

            if (oAuthModel.IsConnected)
            {
                qbModels.IsReadySync         = true;
                qbModels.OAuthorizationModel = oAuthModel;
                qbModels.IsConnected         = oAuthModel.IsConnected;
                var syncService = new QBSyncService(oAuthModel);
                qbModels.SyncObjectsModel.OauthToken = oAuthModel;
                qbModels.SyncObjectsModel.CompanyId  = oAuthModel.Realmid;
                Random random = new Random();
                qbModels.SyncObjectsModel = Save(this, qbModels.SyncObjectsModel);
                SyncObjectsModelId        = qbModels.SyncObjectsModel.Id;
            }

            return(View(data));
        }
        // GET: Common/Items/Short - this displays Items within a Project
        public ActionResult Short(int?id, int IsCorItem = 0)
        {
            if (IsCorItem == 1)
            {
                return(CorItemShort(id));
            }

            var item = db.GetProjectItemInfoByItemID(id).FirstOrDefault();

            if (item == null)
            {
                return(HttpNotFound());
            }

            var projectID     = db.ProjectItems.Where(p => p.ItemID == id).Select(p => p.ProjectID).FirstOrDefault();
            var masterStageID = db.ProjectStages.Where(p => p.ProjectStageID == item.StageID).Select(p => p.StageMasterID).FirstOrDefault();

            ViewBag.Areas         = new SelectList(db.GetAreasByProjectID(projectID).ToList(), nameof(GetAreasByProjectID_Result.ViewID), nameof(GetAreasByProjectID_Result.Division), item.AreaID);
            ViewBag.Divisions     = new SelectList(db.GetDivisionsByProjectID(projectID).ToList(), nameof(GetDivisionsByProjectID_Result.ViewID), nameof(GetDivisionsByProjectID_Result.Division), item.DivisionID);
            ViewBag.CoStages      = new SelectList(db.GetMasterStagesBySiteID(siteusercompanyid).ToList(), nameof(GetMasterStagesBySiteID_Result.ViewID), nameof(GetMasterStagesBySiteID_Result.Stage));
            ViewBag.ProjectStages = new SelectList(db.GetProjectStagesByProjectID(projectID).ToList(), nameof(GetProjectStagesByProjectID_Result.ProjectStageID), nameof(GetProjectStagesByProjectID_Result.StageName), item.StageID);
            ViewBag.ProjectID     = repo.GetProjectIDByItemID(id ?? 0);

            var priceModel = new Models.ItemModels.EditShortItem.PriceModel()
            {
                ItemID        = id,
                Qty           = item.Qty,
                UnitCost      = item.UnitCost,
                UnitPrice     = item.UnitPrice,
                Extension     = item.Extension,
                Margin        = item.Margin,
                Markup        = item.Markup,
                Tax           = item.Tax,
                Taxable       = item.Taxable ?? false,
                Total         = item.Total,
                ExcludePOR    = item.ExcludePor ?? false,
                WarranteePart = item.WarranteePart ?? false,
                OneOffItem    = item.OneOffItem ?? false
            };

            var itemDetails = new ItemModels.ItemDetails()
            {
                ViewID             = item.ViewID,
                Label              = item.Label,
                ProductDescription = item.ProductDescription,
                SalesDescription   = item.SalesDescription,
                AreaID             = item.AreaID,
                Area              = item.Area,
                DivisionID        = item.DivisionID,
                Division          = item.Division,
                Por_              = item.Por_,
                CustodyID         = item.CustodyID,
                Custody           = item.Custody,
                Qty               = item.Qty,
                ProjectCostCodeID = item.ProjectCostCodeID,
                CostCode          = item.CostCode,
                UnitCost          = item.UnitCost,
                UnitPrice         = item.UnitPrice,
                Extension         = item.Extension,
                Margin            = item.Margin,
                Markup            = item.Markup,
                Tax               = item.Tax,
                TaxRate           = item.TaxRate,
                Taxable           = item.Taxable,
                Total             = item.Total,
                ExcludePor        = item.ExcludePor,
                WarranteePart     = item.WarranteePart,
                OneOffItem        = item.OneOffItem,
                StageID           = item.StageID,
                Stage             = item.Stage,
                Hours             = item.Hours,
                ProjectTotalHours = item.ProjectTotalHours,
            };

            ViewBag.Item = itemDetails;

            var model = new Models.ItemModels.EditShortItem()
            {
                Price = priceModel
            };

            var subLabors = db.GetSubLaborInfoByProjectItemID(id, projectID, masterStageID).ToList();
            var Labors    = new StageModels.StageMasterEdit();

            if (subLabors != null)
            {
                foreach (var sub in subLabors)
                {
                    Labors.StageSubDetails.Add(new StageModels.StageDetails()
                    {
                        StageMasterID = (int)masterStageID,
                        SubStageID    = sub.ViewID,
                        SubName       = sub.SubName,
                        CostPerHour   = sub.LaborCost,
                        PricePerHour  = sub.LaborPrice,
                        Percent       = sub.LaborFactor,
                        SellPerHour   = sub.SellPrice
                    });
                }
            }
            ViewBag.Labors = Labors;

            return(View(model));
        }