Пример #1
0
 public static Common.Models.Leads.Lead Create(
     Transaction t,
     Common.Models.Leads.Lead model,
     Common.Models.Account.Users creator)
 {
     return(Create(model, creator, t.Connection, false));
 }
Пример #2
0
 public static Common.Models.Leads.Lead Close(
     Transaction t,
     Common.Models.Leads.Lead model,
     Common.Models.Account.Users modifier)
 {
     return(Close(model, modifier, t.Connection, false));
 }
        public ActionResult Edit(long id)
        {
            List <ViewModels.Leads.LeadStatusViewModel> leadStatusList = new List <ViewModels.Leads.LeadStatusViewModel>();
            List <ViewModels.Leads.LeadSourceViewModel> leadSourceList = new List <ViewModels.Leads.LeadSourceViewModel>();

            ViewModels.Leads.LeadViewModel viewModel = new ViewModels.Leads.LeadViewModel();

            using (IDbConnection conn = Data.Database.Instance.GetConnection())
            {
                Common.Models.Leads.Lead model = Mapper.Map <Common.Models.Leads.Lead>(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)
                {
                    return(new RedirectResult("/Opportunities/Edit/" + op.Id.Value.ToString()));
                }

                model.Contact = Mapper.Map <Common.Models.Contacts.Contact>(Data.Contacts.Contact.Get(model.Contact.Id.Value));
                if (model.Fee != null)
                {
                    model.Fee = Mapper.Map <Common.Models.Leads.LeadFee>(Data.Leads.LeadFee.Get(model.Fee.Id.Value, conn, false));
                    if (model.Fee.To != null)
                    {
                        model.Fee.To = Mapper.Map <Common.Models.Contacts.Contact>(Data.Contacts.Contact.Get(model.Fee.To.Id.Value));
                    }
                }

                Data.Leads.LeadStatus.List(conn, false).ForEach(x =>
                {
                    leadStatusList.Add(Mapper.Map <ViewModels.Leads.LeadStatusViewModel>(x));
                });

                Data.Leads.LeadSource.List(conn, false).ForEach(x =>
                {
                    leadSourceList.Add(Mapper.Map <ViewModels.Leads.LeadSourceViewModel>(x));
                });

                viewModel         = Mapper.Map <ViewModels.Leads.LeadViewModel>(model);
                viewModel.Contact = Mapper.Map <ViewModels.Contacts.ContactViewModel>(model.Contact);
                viewModel.Fee     = Mapper.Map <ViewModels.Leads.LeadFeeViewModel>(model.Fee);
                if (model.Fee != null)
                {
                    viewModel.Fee.To = Mapper.Map <ViewModels.Contacts.ContactViewModel>(model.Fee.To);
                }
                else
                {
                    viewModel.Fee    = new ViewModels.Leads.LeadFeeViewModel();
                    viewModel.Fee.To = new ViewModels.Contacts.ContactViewModel();
                }
            }

            ViewBag.LeadStatusList = leadStatusList;
            ViewBag.LeadSourceList = leadSourceList;

            return(View(viewModel));
        }
Пример #4
0
        public static Common.Models.Leads.Lead Edit(
            Common.Models.Leads.Lead model,
            Common.Models.Account.Users modifier,
            IDbConnection conn   = null,
            bool closeConnection = true)
        {
            model.ModifiedBy = modifier;
            model.Modified   = DateTime.UtcNow;
            DBOs.Leads.Lead dbo = Mapper.Map <DBOs.Leads.Lead>(model);

            conn = DataHelper.OpenIfNeeded(conn);

            conn.Execute("UPDATE \"lead\" SET " +
                         "\"status_id\"=@StatusId, \"contact_id\"=@ContactId, \"source_id\"=@SourceId, \"fee_id\"=@FeeId, \"closed\"=@Closed, \"details\"=@Details, \"utc_modified\"=@UtcModified, \"modified_by_user_pid\"=@ModifiedByUserPId " +
                         "WHERE \"id\"=@Id", dbo);

            DataHelper.Close(conn, closeConnection);

            return(model);
        }
        public ActionResult Edit(long id, ViewModels.Leads.LeadViewModel viewModel)
        {
            Common.Models.Account.Users currentUser;
            Common.Models.Leads.Lead    model;

            using (Data.Transaction trans = Data.Transaction.Create(true))
            {
                try
                {
                    currentUser = Data.Account.Users.Get(trans, User.Identity.Name);
                    Common.Models.Leads.Lead oldLead = Data.Leads.Lead.Get(trans, id);

                    model = Mapper.Map <Common.Models.Leads.Lead>(viewModel);
                    //model.Source = Mapper.Map<Common.Models.Leads.LeadSource>(viewModel.Source);
                    model.Fee = Mapper.Map <Common.Models.Leads.LeadFee>(viewModel.Fee);

                    if (oldLead.Fee != null)
                    {
                        model.Fee = Data.Leads.LeadFee.Edit(trans, model.Fee, currentUser);
                    }
                    else
                    {
                        model.Fee = Data.Leads.LeadFee.Create(trans, model.Fee, currentUser);
                    }

                    //model.Source = Data.Leads.LeadSource.Edit(trans, model.Source, currentUser);
                    model = Data.Leads.Lead.Edit(trans, model, currentUser);

                    trans.Commit();

                    return(RedirectToAction("Details", new { Id = id }));
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    return(Edit(id));
                }
            }
        }
Пример #6
0
        public static Common.Models.Leads.Lead Create(
            Common.Models.Leads.Lead model,
            Common.Models.Account.Users creator,
            IDbConnection conn   = null,
            bool closeConnection = true)
        {
            model.CreatedBy = model.ModifiedBy = creator;
            model.Created   = model.Modified = DateTime.UtcNow;
            DBOs.Leads.Lead dbo = Mapper.Map <DBOs.Leads.Lead>(model);

            conn = DataHelper.OpenIfNeeded(conn);

            if (conn.Execute("INSERT INTO \"lead\" (\"status_id\", \"contact_id\", \"source_id\", \"fee_id\", \"utc_created\", \"utc_modified\", \"created_by_user_pid\", \"modified_by_user_pid\") " +
                             "VALUES (@StatusId, @ContactId, @SourceId, @FeeId, @UtcCreated, @UtcModified, @CreatedByUserPId, @ModifiedByUserPId)",
                             dbo) > 0)
            {
                model.Id = conn.Query <DBOs.Leads.Lead>("SELECT currval(pg_get_serial_sequence('lead', 'id')) AS \"id\"").Single().Id;
            }

            DataHelper.Close(conn, closeConnection);

            return(model);
        }
        public ActionResult Convert(long id, ViewModels.Opportunities.CreateOpportunityViewModel viewModel)
        {
            Common.Models.Account.Users             currentUser;
            Common.Models.Opportunities.Opportunity opportunity;
            Common.Models.Matters.Matter            matter;

            using (Data.Transaction trans = Data.Transaction.Create(true))
            {
                try
                {
                    Common.Models.Leads.Lead lead;
                    currentUser = Data.Account.Users.Get(trans, User.Identity.Name);
                    Common.Models.Leads.Lead oldLead = Data.Leads.Lead.Get(trans, viewModel.Opportunity.Lead.Id.Value);

                    lead     = Mapper.Map <Common.Models.Leads.Lead>(viewModel.Opportunity.Lead);
                    lead.Fee = Mapper.Map <Common.Models.Leads.LeadFee>(viewModel.Opportunity.Lead.Fee);

                    if (oldLead.Fee != null)
                    {
                        lead.Fee = Data.Leads.LeadFee.Edit(trans, lead.Fee, currentUser);
                    }
                    else
                    {
                        lead.Fee = Data.Leads.LeadFee.Create(trans, lead.Fee, currentUser);
                    }

                    lead = Data.Leads.Lead.Edit(trans, lead, currentUser);


                    matter = Mapper.Map <Common.Models.Matters.Matter>(viewModel.Matter);
                    matter = Data.Matters.Matter.Create(trans, matter, currentUser);

                    viewModel.Opportunity.Id     = id;
                    viewModel.Opportunity.Matter = new ViewModels.Matters.MatterViewModel()
                    {
                        Id = matter.Id
                    };
                    opportunity = Mapper.Map <Common.Models.Opportunities.Opportunity>(viewModel.Opportunity);

                    // Check the probability, is it percent or decimal?
                    if (opportunity.Probability.HasValue && opportunity.Probability.Value > 1)
                    {
                        opportunity.Probability = opportunity.Probability.Value / 100;
                    }

                    opportunity = Data.Opportunities.Opportunity.Edit(trans, opportunity, currentUser);


                    // Assign Contacts

                    if (viewModel.Contact1 != null && viewModel.Contact1.Contact != null &&
                        viewModel.Contact1.Contact.Id.HasValue)
                    {
                        Common.Models.Matters.MatterContact mc = Mapper.Map <Common.Models.Matters.MatterContact>(viewModel.Contact1);
                        mc.Matter = matter;
                        Data.Matters.MatterContact.Create(trans, mc, currentUser);
                    }
                    if (viewModel.Contact2 != null && viewModel.Contact2.Contact != null &&
                        viewModel.Contact2.Contact.Id.HasValue)
                    {
                        Common.Models.Matters.MatterContact mc = Mapper.Map <Common.Models.Matters.MatterContact>(viewModel.Contact2);
                        mc.Matter = matter;
                        Data.Matters.MatterContact.Create(trans, mc, currentUser);
                    }
                    if (viewModel.Contact3 != null && viewModel.Contact3.Contact != null &&
                        viewModel.Contact3.Contact.Id.HasValue)
                    {
                        Common.Models.Matters.MatterContact mc = Mapper.Map <Common.Models.Matters.MatterContact>(viewModel.Contact3);
                        mc.Matter = matter;
                        Data.Matters.MatterContact.Create(trans, mc, currentUser);
                    }
                    if (viewModel.Contact4 != null && viewModel.Contact4.Contact != null &&
                        viewModel.Contact4.Contact.Id.HasValue)
                    {
                        Common.Models.Matters.MatterContact mc = Mapper.Map <Common.Models.Matters.MatterContact>(viewModel.Contact4);
                        mc.Matter = matter;
                        Data.Matters.MatterContact.Create(trans, mc, currentUser);
                    }
                    if (viewModel.Contact5 != null && viewModel.Contact5.Contact != null &&
                        viewModel.Contact5.Contact.Id.HasValue)
                    {
                        Common.Models.Matters.MatterContact mc = Mapper.Map <Common.Models.Matters.MatterContact>(viewModel.Contact5);
                        mc.Matter = matter;
                        Data.Matters.MatterContact.Create(trans, mc, currentUser);
                    }
                    if (viewModel.Contact6 != null && viewModel.Contact6.Contact != null &&
                        viewModel.Contact6.Contact.Id.HasValue)
                    {
                        Common.Models.Matters.MatterContact mc = Mapper.Map <Common.Models.Matters.MatterContact>(viewModel.Contact6);
                        mc.Matter = matter;
                        Data.Matters.MatterContact.Create(trans, mc, currentUser);
                    }


                    trans.Commit();

                    return(RedirectToAction("Details", "Matters", new { Id = matter.Id }));
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    return(Edit(id));
                }
            }
        }
        public ActionResult Edit(long id, ViewModels.Opportunities.OpportunityViewModel viewModel)
        {
            Common.Models.Account.Users             currentUser;
            Common.Models.Opportunities.Opportunity model;

            using (Data.Transaction trans = Data.Transaction.Create(true))
            {
                try
                {
                    Common.Models.Leads.Lead lead;
                    currentUser = Data.Account.Users.Get(trans, User.Identity.Name);
                    Common.Models.Leads.Lead oldLead = Data.Leads.Lead.Get(trans, viewModel.Lead.Id.Value);

                    lead     = Mapper.Map <Common.Models.Leads.Lead>(viewModel.Lead);
                    lead.Fee = Mapper.Map <Common.Models.Leads.LeadFee>(viewModel.Lead.Fee);

                    if (oldLead.Fee != null)
                    {
                        lead.Fee = Data.Leads.LeadFee.Edit(trans, lead.Fee, currentUser);
                    }
                    else
                    {
                        lead.Fee = Data.Leads.LeadFee.Create(trans, lead.Fee, currentUser);
                    }

                    lead = Data.Leads.Lead.Edit(trans, lead, currentUser);

                    model = Mapper.Map <Common.Models.Opportunities.Opportunity>(viewModel);

                    // Check the probability, is it percent or decimal?
                    if (model.Probability.HasValue && model.Probability.Value > 1)
                    {
                        model.Probability = model.Probability.Value / 100;
                    }

                    model = Data.Opportunities.Opportunity.Edit(trans, model, currentUser);

                    // Add new contacts
                    viewModel.Contacts.ForEach(x =>
                    {
                        if (x.Id.HasValue)
                        {
                            Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                            {
                                Contact     = Mapper.Map <Common.Models.Contacts.Contact>(x),
                                Opportunity = model
                            };
                            oc = Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                        }
                    });

                    // Handle deletions
                    Data.Opportunities.OpportunityContact.ListForOpportunity(trans, model.Id.Value).ForEach(x =>
                    {
                        if (!viewModel.Contacts.Any(vm =>
                        {
                            if (vm.Id.HasValue)
                            {
                                return(vm.Id.Value == x.Contact.Id.Value);
                            }
                            return(false);
                        }))
                        {
                            Data.Opportunities.OpportunityContact.Disable(trans, x, currentUser);
                        }
                    });

                    trans.Commit();

                    return(RedirectToAction("Details", new { Id = id }));
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    return(Edit(id));
                }
            }
        }
        public ActionResult Convert(long id, ViewModels.Leads.LeadConvertViewModel viewModel)
        {
            Common.Models.Account.Users             currentUser;
            Common.Models.Opportunities.Opportunity model;

            using (Data.Transaction trans = Data.Transaction.Create(true))
            {
                try
                {
                    currentUser = Data.Account.Users.Get(trans, User.Identity.Name);
                    Common.Models.Leads.Lead oldLead = Data.Leads.Lead.Get(trans, id);

                    model      = Mapper.Map <Common.Models.Opportunities.Opportunity>(viewModel.Opportunity);
                    model.Lead = Mapper.Map <Common.Models.Leads.Lead>(viewModel.Opportunity.Lead);
                    //model.Lead.Source = Mapper.Map<Common.Models.Leads.LeadSource>(viewModel.Lead.Source);
                    model.Lead.Fee = Mapper.Map <Common.Models.Leads.LeadFee>(viewModel.Opportunity.Lead.Fee);


                    if (oldLead.Fee != null)
                    {
                        model.Lead.Fee = Data.Leads.LeadFee.Edit(trans, model.Lead.Fee, currentUser);
                    }
                    else
                    {
                        model.Lead.Fee = Data.Leads.LeadFee.Create(trans, model.Lead.Fee, currentUser);
                    }

                    //model.Lead.Source = Data.Leads.LeadSource.Edit(trans, model.Lead.Source, currentUser);
                    model.Lead = Data.Leads.Lead.Edit(trans, model.Lead, currentUser);

                    // Check the probability, is it percent or decimal?
                    if (model.Probability.HasValue && model.Probability.Value > 1)
                    {
                        model.Probability = model.Probability.Value / 100;
                    }

                    model = Data.Opportunities.Opportunity.Create(trans, model, currentUser);

                    // Contacts involved
                    if (viewModel.Contact1 != null & viewModel.Contact1.Id.HasValue)
                    {
                        Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                        {
                            Opportunity = new Common.Models.Opportunities.Opportunity()
                            {
                                Id = model.Id.Value
                            },
                            Contact = Mapper.Map <Common.Models.Contacts.Contact>(viewModel.Contact1)
                        };
                        Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                    }
                    if (viewModel.Contact2 != null & viewModel.Contact2.Id.HasValue)
                    {
                        Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                        {
                            Opportunity = new Common.Models.Opportunities.Opportunity()
                            {
                                Id = model.Id.Value
                            },
                            Contact = Mapper.Map <Common.Models.Contacts.Contact>(viewModel.Contact2)
                        };
                        Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                    }
                    if (viewModel.Contact3 != null & viewModel.Contact3.Id.HasValue)
                    {
                        Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                        {
                            Opportunity = new Common.Models.Opportunities.Opportunity()
                            {
                                Id = model.Id.Value
                            },
                            Contact = Mapper.Map <Common.Models.Contacts.Contact>(viewModel.Contact3)
                        };
                        Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                    }
                    if (viewModel.Contact4 != null & viewModel.Contact4.Id.HasValue)
                    {
                        Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                        {
                            Opportunity = new Common.Models.Opportunities.Opportunity()
                            {
                                Id = model.Id.Value
                            },
                            Contact = Mapper.Map <Common.Models.Contacts.Contact>(viewModel.Contact4)
                        };
                        Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                    }
                    if (viewModel.Contact5 != null & viewModel.Contact5.Id.HasValue)
                    {
                        Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                        {
                            Opportunity = new Common.Models.Opportunities.Opportunity()
                            {
                                Id = model.Id.Value
                            },
                            Contact = Mapper.Map <Common.Models.Contacts.Contact>(viewModel.Contact5)
                        };
                        Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                    }
                    if (viewModel.Contact6 != null & viewModel.Contact6.Id.HasValue)
                    {
                        Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                        {
                            Opportunity = new Common.Models.Opportunities.Opportunity()
                            {
                                Id = model.Id.Value
                            },
                            Contact = Mapper.Map <Common.Models.Contacts.Contact>(viewModel.Contact6)
                        };
                        Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                    }
                    if (viewModel.Contact7 != null & viewModel.Contact7.Id.HasValue)
                    {
                        Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                        {
                            Opportunity = new Common.Models.Opportunities.Opportunity()
                            {
                                Id = model.Id.Value
                            },
                            Contact = Mapper.Map <Common.Models.Contacts.Contact>(viewModel.Contact7)
                        };
                        Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                    }
                    if (viewModel.Contact8 != null & viewModel.Contact8.Id.HasValue)
                    {
                        Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                        {
                            Opportunity = new Common.Models.Opportunities.Opportunity()
                            {
                                Id = model.Id.Value
                            },
                            Contact = Mapper.Map <Common.Models.Contacts.Contact>(viewModel.Contact8)
                        };
                        Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                    }
                    if (viewModel.Contact9 != null & viewModel.Contact9.Id.HasValue)
                    {
                        Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                        {
                            Opportunity = new Common.Models.Opportunities.Opportunity()
                            {
                                Id = model.Id.Value
                            },
                            Contact = Mapper.Map <Common.Models.Contacts.Contact>(viewModel.Contact9)
                        };
                        Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                    }
                    if (viewModel.Contact10 != null & viewModel.Contact10.Id.HasValue)
                    {
                        Common.Models.Opportunities.OpportunityContact oc = new Common.Models.Opportunities.OpportunityContact()
                        {
                            Opportunity = new Common.Models.Opportunities.Opportunity()
                            {
                                Id = model.Id.Value
                            },
                            Contact = Mapper.Map <Common.Models.Contacts.Contact>(viewModel.Contact10)
                        };
                        Data.Opportunities.OpportunityContact.Create(trans, oc, currentUser);
                    }

                    trans.Commit();

                    return(RedirectToAction("Details", "Opportunities", new { Id = model.Id }));
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    return(Edit(id));
                }
            }
        }