Пример #1
0
        private void CreateTwilioNotificationActivity(ARInvoiceEntry invGraph, string Subject, string MessageBody)
        {
            try
            {
                invGraph.Actions["NewActivity"].Press();
            }
            catch (Exception ex)
            {
                if (ex is PXRedirectRequiredException)
                {
                    try
                    {
                        CRActivityMaint graph = (ex as PXRedirectRequiredException).Graph as CRActivityMaint;
                        if (graph != null)
                        {
                            CRActivity callActivity = graph.Activities.Current;
                            callActivity.Type    = "P";
                            callActivity.Subject = Subject;
                            callActivity.Body    = MessageBody;
                            callActivity         = graph.Activities.Update(callActivity);

                            graph.Actions.PressSave();
                        }
                    }
                    catch (Exception graphErr)
                    {
                        throw graphErr;
                    }
                }
            }
        }
Пример #2
0
        public IEnumerable AddMailActivity(PXAdapter adapter, string emailAddress)
        {
            if (!IsCurrentRedy)
            {
                return(adapter.Get());
            }
            PrepareGraph();

            CRActivityMaint graph    = CreateSpecGraph <CRActivityMaint>();
            CRActivity      activity = CreateActivity();
            CRSetup         setup    = PXSelect <CRSetup> .Select(this.Graph);

            activity.Type           = setup.EMailActivityType;
            activity.Status         = ActivityStatus.NotStarted;
            graph.Activites.Current = graph.Activites.Insert(activity);
            PXAdapter mailCreate = new PXAdapter(graph.Activites);

            mailCreate.StartRow    = 0;
            mailCreate.MaximumRows = 1;
            foreach (object e in graph.CreateMail.Press(mailCreate))
            {
                ;
            }
            if (!string.IsNullOrEmpty(emailAddress))
            {
                graph.Message.Current.MailTo = emailAddress;
            }

            throw new PXPopupRedirectException(true, graph, Messages.CRActivityMaint);
        }
Пример #3
0
        public IEnumerable AddActivity(PXAdapter adapter)
        {
            if (!IsCurrentRedy)
            {
                return(adapter.Get());
            }
            PrepareGraph();

            CRActivityMaint graph = CreateSpecGraph <CRActivityMaint>();
            CRActivity      var1  = CreateActivity();

            graph.Activites.Current = graph.Activites.Insert(var1);
            throw new PXPopupRedirectException(true, graph, Messages.CRActivityMaint);
        }
Пример #4
0
        public void MyPut(string phoneNumber)
        {
            CRSetupExt ext = setup.Current.GetExtension <CRSetupExt>();
            string     url = ext.UsrVOIPUrl;

            EPEmployee employee = PXSelect <EPEmployee,
                                            Where <EPEmployee.userID, Equal <Required <EPEmployee.userID> > > > .Select(Base, Base.Accessinfo.UserID);

            BAccountExt baccountExtension = employee.GetExtension <BAccountExt>();
            string      phoneExt          = baccountExtension.UsrPhoneExtension;

            HttpClient client = new HttpClient(
                new HttpClientHandler
            {
                UseCookies      = true,
                CookieContainer = new CookieContainer()
            })
            {
                BaseAddress           = new Uri("http://" + url + "/"),
                DefaultRequestHeaders =
                {
                    Accept = { MediaTypeWithQualityHeaderValue.Parse("text/json") }
                }
            };

            var response = client.PostAsync("http://" + url + "/call.php?exten=" + phoneExt + "&number=" + phoneNumber,
                                            new StringContent("", System.Text.Encoding.UTF8, "application/json")).Result;
            var content = response.Content.ReadAsStringAsync().Result;

            response.EnsureSuccessStatusCode();


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

            activity           = graph.Activities.Insert(activity);
            activity.Type      = "P";
            activity.Subject   = "Outbound Call";
            activity.OwnerID   = employee.UserID;
            activity.RefNoteID = Base.ContactCurrent.Current.NoteID;
            graph.Activities.Update(activity);

            PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode.NewWindow);
        }
Пример #5
0
        public bool Delete(EPActivity current)
        {
            if (current == null)
            {
                return(false);
            }

            switch (current.ClassID.Value)
            {
            case 1:
            case CRActivityClass.CRCaseEvent:
                return(Delete(PXSelect <CREvent, Where <CREvent.taskID, Equal <Required <CREvent.taskID> > > > .Select(this.Graph, current.TaskID)));

            case 0:
            case CRActivityClass.CRCaseTask:
                return(Delete(PXSelect <CRTask, Where <CRTask.taskID, Equal <Required <CRTask.taskID> > > > .Select(this.Graph, current.TaskID)));

            case CRActivityClass.CRActivity:
                break;

            default:
                return(false);
            }

            if (current.IsHold == false)
            {
                throw new PXException(Messages.ActivityNotOnHoldCannotBeDeleted);
            }
            PrepareGraph();
            CRActivityMaint graph = CreateSpecGraph <CRActivityMaint>();

            graph.Activites.Current = (CRActivity)current;
            if (!graph.Activites.Cache.AllowDelete)
            {
                throw new PXException(Messages.ActivityNotOnHoldCannotBeDeleted);
            }
            graph.Activites.Delete((CRActivity)current);
            graph.Persist();
            return(true);
        }
Пример #6
0
    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();
    }