public ActionResult Details(long id, bool preventRedirect = false) { ViewModels.Opportunities.OpportunityViewModel viewModel; Common.Models.Opportunities.Opportunity model; using (IDbConnection conn = Data.Database.Instance.GetConnection()) { model = Data.Opportunities.Opportunity.Get(id, conn, false); if (model.Matter != null && model.Matter.Id.HasValue) { if (!preventRedirect) { return(RedirectToAction("Details", "Matters", new { id = model.Matter.Id.Value })); } else { model.Matter = Data.Matters.Matter.Get(model.Matter.Id.Value, conn, false); } } model.Lead = Data.Leads.Lead.Get(model.Lead.Id.Value, conn, false); if (model.Lead.Fee != null && model.Lead.Fee.Id.HasValue) { model.Lead.Fee = Data.Leads.LeadFee.Get(model.Lead.Fee.Id.Value, conn, false); if (model.Lead.Fee.To != null && model.Lead.Fee.To.Id.HasValue) { model.Lead.Fee.To = Data.Contacts.Contact.Get(model.Lead.Fee.To.Id.Value, conn, false); } } model.Lead.Contact = Data.Contacts.Contact.Get(model.Lead.Contact.Id.Value, conn, false); model.Lead.Source = Data.Leads.LeadSource.Get(model.Lead.Source.Id.Value, conn, false); if (model.Lead.Source.Type != null && model.Lead.Source.Type.Id.HasValue) { model.Lead.Source.Type = Data.Leads.LeadSourceType.Get(model.Lead.Source.Type.Id.Value, conn, false); } model.Lead.Status = Data.Leads.LeadStatus.Get(model.Lead.Status.Id.Value, conn, false); model.Account = Data.Contacts.Contact.Get(model.Account.Id.Value, conn, false); model.Stage = Data.Opportunities.OpportunityStage.Get(model.Stage.Id.Value, conn, false); if (model.Matter != null && model.Matter.Id.HasValue) { model.Matter = Data.Matters.Matter.Get(model.Matter.Id.Value, conn, false); } // Tweaks // Probability is stored as a decimal (<1) need to change representation to percent model.Probability *= 100; viewModel = Mapper.Map <ViewModels.Opportunities.OpportunityViewModel>(model); viewModel.Lead = Mapper.Map <ViewModels.Leads.LeadViewModel>(model.Lead); if (model.Lead.Fee != null) { viewModel.Lead.Fee = Mapper.Map <ViewModels.Leads.LeadFeeViewModel>(model.Lead.Fee); if (model.Lead.Fee.To != null) { viewModel.Lead.Fee.To = Mapper.Map <ViewModels.Contacts.ContactViewModel>(model.Lead.Fee.To); } } viewModel.Lead.Contact = Mapper.Map <ViewModels.Contacts.ContactViewModel>(model.Lead.Contact); viewModel.Lead.Source = Mapper.Map <ViewModels.Leads.LeadSourceViewModel>(model.Lead.Source); if (model.Lead.Source.Type != null) { viewModel.Lead.Source.Type = Mapper.Map <ViewModels.Leads.LeadSourceTypeViewModel>(model.Lead.Source.Type); } viewModel.Lead.Status = Mapper.Map <ViewModels.Leads.LeadStatusViewModel>(model.Lead.Status); viewModel.Account = Mapper.Map <ViewModels.Contacts.ContactViewModel>(model.Account); viewModel.Stage = Mapper.Map <ViewModels.Opportunities.OpportunityStageViewModel>(model.Stage); if (model.Matter != null) { viewModel.Matter = Mapper.Map <ViewModels.Matters.MatterViewModel>(model.Matter); } viewModel.Contacts = new List <ViewModels.Contacts.ContactViewModel>(); Data.Opportunities.OpportunityContact.ListForOpportunity(id, conn, false).ForEach(x => { viewModel.Contacts.Add(Mapper.Map <ViewModels.Contacts.ContactViewModel>(Data.Contacts.Contact.Get(x.Contact.Id.Value))); }); viewModel.Activities = new List <ViewModels.Activities.ActivityBaseViewModel>(); viewModel.InactiveActivities = new List <ViewModels.Activities.ActivityBaseViewModel>(); Data.Opportunities.Opportunity.GetActivities(id, conn, false).ForEach(x => { Common.Models.Activities.ActivityStatusReason statusReason = Data.Activities.ActivityStatusReason.Get(x.StatusReason.Id.Value, conn, false); Common.Models.Activities.ActivityType type = Data.Activities.ActivityType.Get(x.Type.Id.Value); ViewModels.Activities.ActivityBaseViewModel vm = Mapper.Map <ViewModels.Activities.ActivityBaseViewModel>(x); vm.Type = Mapper.Map <ViewModels.Activities.ActivityTypeViewModel>(type); vm.StatusReason = Mapper.Map <ViewModels.Activities.ActivityStatusReasonViewModel>(statusReason); if (x.State.HasValue && x.State.Value) { viewModel.Activities.Add(vm); } else { viewModel.InactiveActivities.Add(vm); } }); } return(View(viewModel)); }
public ActionResult Details(long id, bool preventRedirect = false) { ViewModels.Leads.LeadViewModel viewModel; Common.Models.Leads.Lead model; using (IDbConnection conn = Data.Database.Instance.GetConnection()) { model = Data.Leads.Lead.Get(id, conn, false); // Has this already been made an opportunity? If so, redirect Common.Models.Opportunities.Opportunity op = Data.Opportunities.Opportunity.GetForLead(model.Id.Value); if (op != null && !preventRedirect) { return(new RedirectResult("/Opportunities/Details/" + op.Id.Value.ToString())); } viewModel = Mapper.Map <ViewModels.Leads.LeadViewModel>(model); if (op != null) { viewModel.Opportunity = Mapper.Map <ViewModels.Opportunities.OpportunityViewModel>(op); } if (model.Status != null && model.Status.Id.HasValue) { model.Status = Data.Leads.LeadStatus.Get(model.Status.Id.Value, conn, false); viewModel.Status = Mapper.Map <ViewModels.Leads.LeadStatusViewModel>(model.Status); } if (model.Contact != null && model.Contact.Id.HasValue) { model.Contact = Data.Contacts.Contact.Get(model.Contact.Id.Value, conn, false); viewModel.Contact = Mapper.Map <ViewModels.Contacts.ContactViewModel>(model.Contact); } if (model.Source != null && model.Source.Id.HasValue) { model.Source = Data.Leads.LeadSource.Get(model.Source.Id.Value, conn, false); viewModel.Source = Mapper.Map <ViewModels.Leads.LeadSourceViewModel>(model.Source); if (model.Source.Contact != null && model.Source.Contact.Id.HasValue) { model.Source.Contact = Data.Contacts.Contact.Get(model.Source.Contact.Id.Value, conn, false); viewModel.Source.Contact = Mapper.Map <ViewModels.Contacts.ContactViewModel>(model.Source.Contact); } if (model.Source.Type != null && model.Source.Type.Id.HasValue) { model.Source.Type = Data.Leads.LeadSourceType.Get(model.Source.Type.Id.Value, conn, false); viewModel.Source.Type = Mapper.Map <ViewModels.Leads.LeadSourceTypeViewModel>(model.Source.Type); } } if (model.Fee != null && model.Fee.Id.HasValue) { model.Fee = Data.Leads.LeadFee.Get(model.Fee.Id.Value, conn, false); viewModel.Fee = Mapper.Map <ViewModels.Leads.LeadFeeViewModel>(model.Fee); if (model.Fee.To != null && model.Fee.To.Id.HasValue) { model.Fee.To = Data.Contacts.Contact.Get(model.Fee.To.Id.Value, conn, false); viewModel.Fee.To = Mapper.Map <ViewModels.Contacts.ContactViewModel>(model.Fee.To); } } viewModel.Activities = new List <ViewModels.Activities.ActivityBaseViewModel>(); viewModel.InactiveActivities = new List <ViewModels.Activities.ActivityBaseViewModel>(); Data.Leads.Lead.GetActivities(id, conn, false).ForEach(x => { Common.Models.Activities.ActivityStatusReason statusReason = Data.Activities.ActivityStatusReason.Get(x.StatusReason.Id.Value, conn, false); Common.Models.Activities.ActivityType type = Data.Activities.ActivityType.Get(x.Type.Id.Value, conn, false); ViewModels.Activities.ActivityBaseViewModel vm = Mapper.Map <ViewModels.Activities.ActivityBaseViewModel>(x); vm.Type = Mapper.Map <ViewModels.Activities.ActivityTypeViewModel>(type); vm.StatusReason = Mapper.Map <ViewModels.Activities.ActivityStatusReasonViewModel>(statusReason); if (x.State.HasValue && x.State.Value) { viewModel.Activities.Add(vm); } else { viewModel.InactiveActivities.Add(vm); } }); } return(View(viewModel)); }