Example #1
0
        public static void CheckContactStatusTransition(ARContact contact, string contactStatus)
        {
            bool isValid = (contactStatus != ContactStatus.ChuaDuyet) && (contact.ARContactStatus != ContactStatus.HuyBo);

            if (contactStatus == ContactStatus.DangXacMinh)
            {
                isValid = contact.ARContactStatus == ContactStatus.ChuaDuyet;
            }

            if (!isValid)
            {
                throw new BusinessException("Trạng thái liên hệ không hợp lệ");
            }
        }
Example #2
0
 public static ShortContactDto ToShortContactDto(this ARContact entity)
 {
     return(entity == null
         ? null
         : new ShortContactDto
     {
         Id = entity.Id,
         Email = entity.ARContactEmail,
         Contributor = entity.ADCreatedUser.ToShortUserDto(),
         ContactName = entity.ARContactName,
         Phone1 = entity.ARContactPhone1,
         UserContact = entity.ARContactUserContact,
         ContributeDate = entity.AACreatedDate.ToSecondsTimestamp(),
         Status = entity.ARContactStatus.ToDictionaryItemDto <ContactStatus>(),
         AverageRating = entity.ARContactEvalution.GetValueOrDefault(),
         AggregateOfRatings = entity.ARContactReviews.ToAggregateOfRatings(),
         TitleContribute = entity.ARContactTitleContribute,
         ReviewCount = entity.ARContactReviews.ToReviewCount(),
     });
 }
Example #3
0
 private static void UpdateContactDto(ARContact entity, EditContactDto dto)
 {
     entity.ARContactContributor     = dto.Contributor;
     entity.ARContactTitleContribute = dto.TitleContribute;
     entity.FK_ARContactTypeID       = dto.ContactTypeID;
     entity.ARContactName            = dto.ContactName;
     entity.ARContactAcronymName     = dto.AcronymName;
     entity.ARContactUserContact     = dto.UserContact;
     entity.ARContactPhone1          = dto.Phone1;
     entity.ARContactPhone2          = dto.Phone2;
     entity.ARContactEmail           = dto.Email;
     entity.ARContactWebsite         = dto.Website;
     entity.ARContactNote            = dto.Note;
     entity.ARContactImage           = dto.Images.JoinNotEmpty(";");
     entity.FK_GEStateProvinceID     = dto.StateProvinceID;
     entity.FK_GEDistrictID          = dto.DistrictID;
     entity.FK_GECommuneID           = dto.CommuneID;
     entity.ARUserHouseNumber        = dto.HouseNumber;
     entity.ARUserAddress            = dto.Address;
 }
Example #4
0
 public static ContactDto ToContactDto(this ARContact entity)
 {
     return(entity == null
         ? null
         : new ContactDto
     {
         Id = entity.Id,
         Email = entity.ARContactEmail,
         AcronymName = entity.ARContactAcronymName,
         Images = entity.ARContactImage.SplitBy(";").Select(x => x + CommonConstants.DefaultImageExtension).ConvertArray(ImageUrlHelper.ToImageUrl),
         HouseNumber = entity.ARUserHouseNumber,
         Website = entity.ARContactWebsite,
         Contributor = entity.ADCreatedUser.ToShortUserDto(),
         StateProvince = entity.GEStateProvince.ToDictionaryItemDto(),
         TitleContribute = entity.ARContactTitleContribute,
         Detail = entity.ARContactDetail,
         Note = entity.ARContactNote,
         Commune = entity.GECommune.ToDictionaryItemDto(),
         District = entity.GEDistrict.ToDictionaryItemDto(),
         ContactName = entity.ARContactName,
         Phone1 = entity.ARContactPhone1,
         Phone2 = entity.ARContactPhone2,
         ContactType = entity.ARContactType.ToDictionaryItemDto(),
         Address = entity.ARUserAddress,
         UserContact = entity.ARContactUserContact,
         UserType = entity.ARContactUserType.ToDictionaryItemDto <UserType>(),
         AverageRating = entity.ARContactEvalution.GetValueOrDefault(),
         AggregateOfRatings = entity.ARContactReviews.ToAggregateOfRatings(),
         ContributeDate = entity.AACreatedDate.ToSecondsTimestamp(),
         LocationInCharge = entity.ARContactForestCommuneGroups.ConvertArray(
             x => new ContactLocationInChargeDto
         {
             Commune = x.GECommune.ToDictionaryItemDto(),
             District = x.GECommune?.GEDistrict.ToDictionaryItemDto(),
             StateProvince = x.GECommune?.GEDistrict?.GEStateProvince.ToDictionaryItemDto()
         }),
         Status = entity.ARContactStatus.ToDictionaryItemDto <ContactStatus>()
     });
 }
Example #5
0
        public void SendTwilioNotification(ARInvoiceEntry invGraph, string notificationType, bool isMassProcess = false)
        {
            ARInvoiceEntryPXExt invGraphExt = invGraph.GetExtension <ARInvoiceEntryPXExt>();

            //Raise error if Twilio Integration Setup not configured
            if (invGraphExt.TwilioSetupInfo.Current == null)
            {
                throw new PXException(Messages.TwilioAccountNotSetup);
            }

            //Get current billing contact
            if (invGraph.Billing_Contact.Current == null)
            {
                invGraph.Billing_Contact.Current = invGraph.Billing_Contact.Select();
            }
            ARContact contact = invGraph.Billing_Contact.Current;

            if (contact == null || String.IsNullOrEmpty(contact.Phone1))
            {
                throw new PXException(Messages.InvoiceBillingContactNotExists);
            }

            int?iNotificationID = (notificationType == TwilioNotificationType.SMS) ?
                                  invGraphExt.TwilioSetupInfo.Current?.SMSNotificationID :
                                  invGraphExt.TwilioSetupInfo.Current?.CallNotificationID;

            //Raise notification appropriate error message
            if (notificationType == TwilioNotificationType.SMS)
            {
                if (iNotificationID == null)
                {
                    throw new PXException(Messages.SMSNotificationIDNotSpecified);
                }
            }
            else if (notificationType == TwilioNotificationType.OutBoundCall)
            {
                if (iNotificationID == null)
                {
                    throw new PXException(Messages.CallNotificationIDNotSpecified);
                }
            }
            else
            {
                throw new PXException(Messages.UNSpecifiedTwilioNotificationType);
            }

            //Get the notification
            PX.SM.Notification notification = PXSelect <PX.SM.Notification,
                                                        Where <PX.SM.Notification.notificationID, Equal <Required <PX.SM.Notification.notificationID> > > > .
                                              Select(invGraph, invGraphExt.TwilioSetupInfo.Current.SMSNotificationID);

            if (notification == null)
            {
                throw new PXException(Messages.NotificationNotFound);
            }

            //Process the datafields and get Subject and Notification Body ready.
            string subjectNotification = String.Format("{0} - {1}", (notificationType == TwilioNotificationType.SMS) ?
                                                       Messages.SMSSubjectPrefix : Messages.CallSubjectPrefix,
                                                       PX.Data.Wiki.Parser.PXTemplateContentParser.
                                                       Instance.Process(notification.Subject, invGraph,
                                                                        invGraph.Document.Current.GetType(), null));
            string bodyNotification = PX.Data.Wiki.Parser.PXTemplateContentParser.
                                      Instance.Process(notification.Body, invGraph,
                                                       invGraph.Document.Current.GetType(), null);

            //Create Twilio Notification
            var twilio = new TwilioNotification(invGraphExt.TwilioSetupInfo.Current.TwilioAccountSid,
                                                invGraphExt.TwilioSetupInfo.Current.TwilioAuthToken)
            {
                Origin = invGraphExt.TwilioSetupInfo.Current.TwilioFromPhoneNumber
            };

            if (notificationType == TwilioNotificationType.SMS)
            {
                twilio.SendSMS(contact.Phone1, PX.Data.Search.SearchService.Html2PlainText(bodyNotification));
            }
            else if (notificationType == TwilioNotificationType.OutBoundCall)
            {
                twilio.SendCall(contact.Phone1, PX.Data.Search.SearchService.Html2PlainText(bodyNotification));
            }
            else
            {
                throw new PXException(Messages.UNSpecifiedTwilioNotificationType);
            }

            //Create Activity in Acumataica
            CreateTwilioNotificationActivity(invGraph, subjectNotification, bodyNotification);
        }