public ActionResult Create(int?contactid, int?leadid, string from)
        {
            var siteCoID = siteusercompanyid;

            var siteUsers = db.GetSiteUsersBySiteCoID(siteCoID).ToList();

            ViewBag.Clients       = new SelectList(db.GetContactsBySiteCoID(siteCoID).ToList(), "ViewID", "Customer", contactid);
            ViewBag.Builders      = new SelectList(db.GetBuildersBySiteCoID(siteCoID).ToList(), "ViewID", "Builder", contactid);
            ViewBag.ProjectStatus = new SelectList(db.GetQuoteStatusBySiteCoID(siteCoID), "ViewID", "Status");
            ViewBag.SiteUsers     = new SelectList(siteUsers, "ViewID", "User");

            LoadAdditionalDropdownData();

            QuoteModels.NewQuote model = new QuoteModels.NewQuote();

            if (leadid.HasValue)
            {
                try
                {
                    ProjectInfo proj = db.ProjectInfo.Where(p => p.ProjectID == leadid.Value).FirstOrDefault();

                    model = new QuoteModels.NewQuote()
                    {
                        Address1      = proj.ProjectAddress1,
                        Address2      = proj.ProjectAddress2,
                        City          = proj.ProjectCity,
                        Country       = proj.ProjectCountry,
                        ClientID      = proj.ContactID,
                        Email         = proj.ProjectEmail,
                        JobPhone      = proj.ProjectPhone,
                        JobNumber     = proj.ProjectNumber,
                        SalesPersonID = proj.SalesID,
                        State         = proj.ProjectState,
                        StatusID      = proj.ProjectStatusID,
                        Zip           = proj.ProjectZip,
                        QuoteName     = proj.ProjectName
                    };
                }
                catch (Exception ex)
                {
                    ex.Log();
                }
            }
            else
            {
                model = new QuoteModels.NewQuote()
                {
                    SalesPersonID    = siteuserid,
                    ProjectManagerID = siteuserid,
                    DesignerID       = siteuserid
                };
            }

            model.QuoteID   = repo.GenerateNewProjectID();
            model.StartDate = DateTime.Now;
            model.JobNumber = db.GetNewQuoteNumFormat(siteusercompanyid).FirstOrDefault();
            return(View(model));
        }
        public ActionResult Edit(int?id)
        {
            ProjectInfo proj = db.ProjectInfo.Where(p => p.ProjectID == (id ?? 0)).FirstOrDefault();

            if (proj == null)
            {
                return(HttpNotFound());
            }
            ProjectLeadInfo pli = db.ProjectLeadInfo.Where(p => p.ProjectID == (id ?? 0)).FirstOrDefault() ?? new ProjectLeadInfo();

            var siteCoID  = siteusercompanyid;
            var siteUsers = db.GetSiteUsersBySiteCoID(siteCoID).ToList();

            ViewBag.Clients       = new SelectList(db.GetContactsBySiteCoID(siteCoID).ToList(), "ViewID", "Customer");
            ViewBag.ProjectStatus = new SelectList(db.GetQuoteStatusBySiteCoID(siteCoID), "ViewID", "Status");
            ViewBag.SiteUsers     = new SelectList(siteUsers, "ViewID", "User");
            ViewBag.Builders      = new SelectList(db.GetBuildersBySiteCoID(siteCoID).ToList(), "ViewID", "Builder");

            LoadAdditionalDropdownData();
            LoadAdditionalGridData(id ?? 0);

            ViewBag.ProjectStages = db.GetProjectStagesByProjectID(id).ToList();

            QuoteModels.NewQuote model = new QuoteModels.NewQuote();

            model = new QuoteModels.NewQuote()
            {
                QuoteID          = proj.ProjectID,
                Address1         = proj.ProjectAddress1,
                Address2         = proj.ProjectAddress2,
                City             = proj.ProjectCity,
                ClientID         = proj.ContactID,
                Email            = proj.ProjectEmail,
                JobPhone         = proj.ProjectPhone,
                JobNumber        = proj.ProjectNumber,
                SalesPersonID    = proj.SalesID,
                State            = proj.ProjectState,
                Country          = proj.ProjectCountry,
                StatusID         = proj.ProjectStatusID,
                Zip              = proj.ProjectZip,
                DesignerID       = proj.DesignerID,
                ProjectManagerID = proj.PmID,
                QuoteName        = proj.ProjectName,
                BuilderID        = proj.BuilderID,
                Site             = proj.Site,
                Lot              = proj.Lot,
                StartDate        = proj.ProjectStartDate
            };

            return(View("_Edit", model));
        }
        private int SaveQuote(QuoteModels.NewQuote Model)
        {
            int siteCoID = siteusercompanyid;

            var quote = new ProjectInfo()
            {
                ProjectID = Model.QuoteID ?? 0,
                LinkID    = Model.ParentLeadID,
                SiteCoID  = siteCoID,
                //ProjectTypeID = Model.TypeID,
                ProjectName      = Model.QuoteName,
                ProjectNumber    = Model.JobNumber ?? "",
                ProjectStatusID  = Model.StatusID,
                ContactID        = Model.ClientID,
                ProjectAddress1  = Model.Address1,
                ProjectAddress2  = Model.Address2,
                ProjectCity      = Model.City,
                ProjectState     = Model.State,
                ProjectCountry   = Model.Country,
                ProjectZip       = Model.Zip,
                ProjectPhone     = Model.JobPhone,
                ProjectEmail     = Model.Email,
                DateUploaded     = DateTime.Now,
                SalesID          = Model.SalesPersonID,
                ProjectStartDate = Model.StartDate,
                PmID             = Model.ProjectManagerID,
                DesignerID       = Model.DesignerID,
                BuilderID        = Model.BuilderID,
                Site             = Model.Site,
                Lot           = Model.Lot,
                ProjectTypeID = 5,
            };

            List <ProjectContacts> projContacts = null;

            //if being created from won-lead, then copy remaining fields from there
            if (Model.ParentLeadID.HasValue && Model.ParentLeadID > 0)
            {
                var parentLeadInfo = db.ProjectInfo.Where(p => p.ProjectID == Model.ParentLeadID.Value).FirstOrDefault();
                projContacts = repo.GetProjectContactsByProjectID(Model.ParentLeadID.Value).AsNoTracking().ToList();

                if (parentLeadInfo != null)
                {
                    quote.AcctJobID      = parentLeadInfo.AcctJobID;
                    quote.JobTypeID      = parentLeadInfo.JobTypeID;
                    quote.ProjectCountry = parentLeadInfo.ProjectCountry;
                    quote.ProjectNotes   = parentLeadInfo.ProjectNotes;
                    quote.QuoteApproved  = parentLeadInfo.QuoteApproved;
                }
            }

            using (TransactionScope tran = new TransactionScope())
            {
                var projectId = repo.SaveProjectInfo(quote);
                //repo.SaveProjectCommunications(projectId, Model.ProjectCommunicationIDs.Where(p => p > 0));
                if (projContacts != null && projContacts.Any())
                {
                    repo.AddProjectContacts(projContacts.ToList(), projectId);
                }

                tran.Complete();

                return(projectId);
            }
        }