Example #1
0
        public IEnumerable masterView()
        {
            MasterTable mt = new MasterTable();

            if (PXView.Filters != null && PXView.Filters.Length > 0)
            {
                PhoneCallerAudit pca = new PhoneCallerAudit();

                for (int i = 0; i < PXView.Filters.Length; i++)
                {
                    var fr = PXView.Filters[i];
                    if (fr.DataField == "PhoneNbr")
                    {
                        pca.PhoneNubmer = fr.Value.ToString();

                        mt.PhoneNbr = pca.PhoneNubmer;
                    }
                    if (fr.DataField == "CallerID")
                    {
                        pca.CallerID = fr.Value.ToString();
                        mt.CallerID  = pca.CallerID;
                    }
                }
                PXResultset <BAccount> resultset = PXSelectJoin <BAccount,
                                                                 InnerJoin <Contact, On <Contact.bAccountID, Equal <BAccount.bAccountID> > >,
                                                                 Where <Contact.phone1, Equal <Required <Contact.phone1> > > > .Select(this, pca.PhoneNubmer);

                if (resultset.Count > 0)
                {
                    PXResult <BAccount, Contact> res = (PXResult <BAccount, Contact>)resultset[0];
                    Contact  contact = res;
                    BAccount bacct   = res;
                    pca.ContactID = contact.ContactID;
                    if (bacct != null)
                    {
                        mt.AcctName = bacct.AcctName;
                    }
                }
                if (savingRequired)
                {
                    Audit.Insert(pca);
                    //Caches[typeof(PhoneCallerAudit)].Persist(PXDBOperation.Insert);
                    Save.Press();
                    savingRequired = false;
                }
            }
            List <MasterTable> result = new List <MasterTable>();

            result.Add(mt);
            return(result);
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        ContactMaint         graph          = PXGraph.CreateInstance <ContactMaint>();
        var                  search_phone   = Request.QueryString["phone"];
        var                  default_callID = Request.QueryString["cid"];
        BusinessAccountMaint baccount_graph = PXGraph.CreateInstance <BusinessAccountMaint>();

        Int32?contactId   = null;
        Guid? contactGuid = null;

        var contacts = PXSelect <Contact,
                                 Where <Contact.phone1,
                                        Equal <Required <Contact.phone1> >,
                                        Or <Contact.phone2,
                                            Equal <Required <Contact.phone2> >,
                                            Or <Contact.phone3,
                                                Equal <Required <Contact.phone3> > > > > > .Select(graph, search_phone, search_phone, search_phone);

        // For now, just grab the first result
        if (contacts.Count() > 0)
        {
            var contact = ((Contact)contacts.First());
            contactName = contact.DisplayName;
            var customers = PXSelect <BAccount,
                                      Where <BAccount.bAccountID,
                                             Equal <Required <Contact.bAccountID> > > > .Select(graph, contact.BAccountID);

            // There should only be one bAccount that matches
            if (customers.Count() > 0)
            {
                accountCD = ((BAccount)customers.First()).AcctCD;
            }

            contactId   = contact.ContactID;
            contactGuid = contact.NoteID;
        }
        else
        {
            var contact = new Contact();
            contact.LastName = default_callID;
            contact.Phone1   = search_phone;
            contact          = graph.Contact.Insert(contact);
            //graph.Contact.Cache.Persist(PXDBOperation.Insert);
            graph.Save.Press();
            contactName = default_callID;

            contactId   = graph.Contact.Current.ContactID;
            contactGuid = graph.Contact.Current.NoteID;
        }

        // Save an audit record of the phone call
        var audit_graph = PXGraph.CreateInstance <PhoneAudit>();
        var audit       = new PhoneCallerAudit();

        audit.PhoneNubmer = search_phone;
        audit.CallerID    = contactName;
        audit.ContactID   = contactId;
        audit_graph.Audit.Insert(audit);
        audit_graph.Save.Press();

        CRActivityMaint activity_graph = PXGraph.CreateInstance <CRActivityMaint>();
        CRActivity      activity       = new CRActivity();

        activity           = activity_graph.Activities.Insert(activity);
        activity.Type      = "P";
        activity.Subject   = "Inbound Call";
        activity.OwnerID   = new Guid("B5344897-037E-4D58-B5C3-1BDFD0F47BF9");
        activity.ContactID = contactId;
        activity.RefNoteID = contactGuid;
        activity_graph.Activities.Update(activity);
        activity_graph.Save.Press();

        var json = string.Format("{{\"baccount\": \"{0}\", \"contact\": \"{1}\"}}", accountCD, contactName);

        Response.Clear();
        Response.ContentType = "application/json; charset=utf-8";
        Response.Write(json);
        Response.End();
    }