public ActionResult Details(int id)
        {
            try
            {
                var organization = _db.Organizations.Find(id);

                var syncedInfo = new OrganizationSyncedInfo();

                if (organization.OrganizationSyncedInfo != null)
                {
                    syncedInfo = _db.OrganizationSyncedInfos.First(x => x.MerId == id);
                }

                var leadSalesFunnelChecker = new LeadSalesFunnelChecker(id);

                var model = new OrganizationDetailsViewModel()
                {
                    Organization              = organization,
                    OrganizationDetails       = _db.OrganizationDetails.First(od => od.MerId == id),
                    MerDeliveryDetails        = _db.MerDeliveryDetails.First(mdd => mdd.MerId == id),
                    OrganizationSyncedInfo    = syncedInfo,
                    OrganizationBusinessUnits = _db.Organizations.Where(o => o.VAT == organization.VAT && o.SubjectBusinessUnit != ""),
                    Contacts           = _db.Contacts.Where(c => c.OrganizationId == id),
                    CampaignsFor       = _db.Campaigns.Where(c => c.RelatedCompanyId == id),
                    AcquireEmails      = _db.AcquireEmails.Where(a => a.RelatedOrganizationId == id),
                    Educations         = _db.Educations.Where(e => e.RelatedOrganizationId == id),
                    Opportunities      = _db.Opportunities.Where(op => op.RelatedOrganizationId == id),
                    OpportunitiesCount = _db.Opportunities.Count(op => op.RelatedOrganizationId == id),
                    Leads                  = _db.Leads.Where(l => l.RelatedOrganizationId == id),
                    LeadsCount             = _db.Leads.Count(l => l.RelatedOrganizationId == id),
                    ClickVoxQuoteRequests  = _db.ClickVoxQuoteRequests.Where(q => q.RelatedOrganizationId == id).OrderByDescending(q => q.InsertDate),
                    Quotes                 = _db.Quotes.Where(q => q.RelatedOrganizationId == id),
                    ContractDrafts         = _db.ContractDrafts.Where(d => d.RelatedOrganizationId == id),
                    Contracts              = _db.Contracts.Where(c => c.RelatedOrganizationId == id).OrderByDescending(c => c.MerId),
                    TicketsAsReceiver      = _db.DeliveryTicketModels.Where(t => t.ReceiverId == id).OrderByDescending(t => t.SentDate),
                    TicketsAsReceiverCount = _db.DeliveryTicketModels.Where(t => t.ReceiverId == id).OrderByDescending(t => t.SentDate).Count(),
                    TicketsAsSender        = _db.DeliveryTicketModels.Where(t => t.SenderId == id).OrderByDescending(t => t.SentDate),
                    TicketsAsSenderCount   = _db.DeliveryTicketModels.Where(t => t.SenderId == id).OrderByDescending(t => t.SentDate).Count(),
                    Attributes             = _db.OrganizationAttributes.Where(a => a.OrganizationId == id).OrderBy(a => a.AttributeClass),
                    Activities             = _db.ActivityLogs.Where(al => al.Module == ActivityLog.ModuleEnum.Organizations && al.ReferenceId == id).OrderByDescending(al => al.InsertDate),
                    ActivitiesCount        = _db.ActivityLogs.Count(al => al.Module == ActivityLog.ModuleEnum.Organizations && al.ReferenceId == id),
                    LeadSalesFunnelChecker = leadSalesFunnelChecker
                };

                return(View(model));
            }
            catch (FormatException)
            {
                return(View("ErrorWrongInputFormat"));
            }
        }
示例#2
0
        // GET: Sales/Leads/Details/5
        public ActionResult Details(int id)
        {
            Lead   lead = _db.Leads.Find(id);
            string relatedCampaignName = String.Empty;

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

            var relatedSalesContacts = _db.Contacts.Where(c =>
                                                          c.Organization.MerId == lead.RelatedOrganizationId && c.ContactType == Contact.ContactTypeEnum.Sales);
            var relatedLeadNotes      = _db.LeadNotes.Where(n => n.RelatedLeadId == lead.LeadId).OrderByDescending(n => n.InsertDate);
            var relatedLeadActivities = _db.ActivityLogs.Where(a =>
                                                               a.ReferenceId == lead.LeadId && a.Module == ModuleEnum.Leads).OrderByDescending(a => a.InsertDate);
            var relatedAcquireEmailBasesCampaign = _db.Campaigns.Where(c => c.CampaignType == Campaigns.Models.Campaign.CampaignTypeEnum.EmailBases &&
                                                                       c.CampaignStatus == Campaigns.Models.Campaign.CampaignStatusEnum.Start && c.RelatedCompanyId == lead.RelatedOrganization.MerId);

            if (lead.RelatedCampaignId != null)
            {
                var relatedCampaign = _db.Campaigns.First(c => c.CampaignId == lead.RelatedCampaignId);
                relatedCampaignName = relatedCampaign.CampaignName;
            }
            var users = _db.Users.Select(u => u);
            //var _LastLeadNote = (from n in db.LeadNotes
            //                     where n.RelatedLeadId == lead.LeadId
            //                     select n).OrderByDescending(n => n.InsertDate).Select(n => n.Note).First().ToString();

            var salesNoteTemplates = new List <ListItem>
            {
                new ListItem {
                    Value = @"razloženo funkcioniranje servisa (opis onoga što se dogodi nakon što korisnik klikne pošalji eRačun)", Text = @"razloženo funkcioniranje servisa (opis onoga što se dogodi nakon što korisnik klikne pošalji eRačun)"
                },
                new ListItem {
                    Value = @"argumentirana korisnička podrška -- ažuriranje mailova (90% uspješnost), slanje tipske obavijesti, zvanje za preuzimanje (97% uspješnost)", Text = @"argumentirana korisnička podrška -- ažuriranje mailova (90% uspješnost), slanje tipske obavijesti, zvanje za preuzimanje (97% uspješnost)"
                },
                new ListItem {
                    Value = @"objašnjena tehnička pozadina s ERPom", Text = @"objašnjena tehnička pozadina s ERPom"
                },
                new ListItem {
                    Value = @"objašnjena tehnička pozadina s eRa aplikacijom", Text = @"objašnjena tehnička pozadina s eRa aplikacijom"
                },
                new ListItem {
                    Value = @"razložena potvrda primitka, pretraživanje i arhiviranje", Text = @"razložena potvrda primitka, pretraživanje i arhiviranje"
                },
                new ListItem {
                    Value = @"istaknuta jednostavnost uvođenja (kod izgovora nemamo vremena, prostora, u restrukturiranju smo)", Text = @"istaknuta jednostavnost uvođenja (kod izgovora nemamo vremena, prostora, u restrukturiranju smo)"
                },
                new ListItem {
                    Value = @"osvježen kontakt i iznesene novosti", Text = @"osvježen kontakt i iznesene novosti"
                },
                new ListItem {
                    Value = @"izvršen kvalitetan presing", Text = @"izvršen kvalitetan presing"
                },
                new ListItem {
                    Value = @"izvršen salesforce (isticanje benefita uz forzu)", Text = @"izvršen salesforce (isticanje benefita uz forzu)"
                },
                new ListItem {
                    Value = @"poslan mail ps (prijedlog suradnje)", Text = @"poslan mail ps (prijedlog suradnje)"
                },
                new ListItem {
                    Value = @"kreirati i odaslati PND", Text = @"kreirati i odaslati PND"
                },
                new ListItem {
                    Value = @"kreirati i odaslati UO", Text = @"kreirati i odaslati UO"
                },
                new ListItem {
                    Value = @"održan sastanak, poslan FU", Text = @"održan sastanak, poslan FU"
                },
                new ListItem {
                    Value = @"objašnjena zakonska pozadina i pravovaljanost eRačuna", Text = @"objašnjena zakonska pozadina i pravovaljanost eRačuna"
                },
                new ListItem {
                    Value = @"kontaktirani za uvođenje zaprimanja", Text = @"kontaktirani za uvođenje zaprimanja"
                },
                new ListItem {
                    Value = @"obrazložio slanje privitaka", Text = @"obrazložio slanje privitaka"
                },
                new ListItem {
                    Value = @"obrazložio procesnu pokrivenost primatelja te odagnao brige i strahove u vezi preuzimanja od strane njihovih kupaca", Text = @"obrazložio procesnu pokrivenost primatelja te odagnao brige i strahove u vezi preuzimanja od strane njihovih kupaca"
                }
            };

            var rejectReasonList = new List <ListItem>
            {
                new ListItem {
                    Value = @"0", Text = @"Ne želi navesti"
                },
                new ListItem {
                    Value = @"1", Text = @"Nema interesa za uslugu"
                },
                new ListItem {
                    Value = @"2", Text = @"Previsoka cijena"
                },
                new ListItem {
                    Value = @"3", Text = @"Neadekvatna ponuda"
                },
                new ListItem {
                    Value = @"4", Text = @"Koristi drugog posrednika"
                },
                new ListItem {
                    Value = @"5", Text = @"Nedostatak vremena za pokretanje projekta"
                },
                new ListItem {
                    Value = @"6", Text = @"Dio strane grupacije / Strano vlasništvo"
                },
                new ListItem {
                    Value = @"7", Text = @"Drugo / Ostalo"
                },
            };

            var leadSalesFunnelChecker = new LeadSalesFunnelChecker(lead.RelatedOrganization.MerId);

            var leadDetails = new LeadDetailViewModel()
            {
                Lead = lead,
                RelatedCampaignName   = relatedCampaignName,
                RelatedSalesContacts  = relatedSalesContacts,
                RelatedLeadNotes      = relatedLeadNotes,
                RelatedLeadActivities = relatedLeadActivities,
                Users = users,
                SalesNoteTemplates     = salesNoteTemplates,
                RejectReasons          = rejectReasonList,
                RelatedQuotes          = _db.Quotes.Where(x => x.RelatedLeadId == id),
                LeadSalesFunnelChecker = leadSalesFunnelChecker
            };

            if (relatedAcquireEmailBasesCampaign.Count() != 0)
            {
                leadDetails.RelatedAcquireEmailBasesCampaignId = relatedAcquireEmailBasesCampaign.First().CampaignId;
            }

            return(View(leadDetails));
        }