protected override void Execute() { var isCompleted = JosephMSmsService.ProcessBulkSmsSending(TargetId); ActivityThisType.IsCompleted.Set(ExecutionContext, isCompleted); }
private void SendAndComplete() { //if send and complete set the set state to complete if (IsMessage(PluginMessage.Create, PluginMessage.Update) && IsStage(PluginStage.PostEvent) && IsMode(PluginMode.Synchronous)) { if (BooleanChangingToTrue(Fields.jmcg_sms_.jmcg_sendandcomplete)) { XrmService.SetState(TargetType, TargetId, OptionSets.SMS.ActivityStatus.Completed); } } //if send and complete set true and setting state to complete //then send the sms if (IsMessage(PluginMessage.SetStateDynamicEntity) && IsStage(PluginStage.PostEvent) && IsMode(PluginMode.Synchronous) && SetStateState == OptionSets.SMS.ActivityStatus.Completed) { var sms = XrmService.Retrieve(Entities.jmcg_sms, TargetId, new[] { Fields.jmcg_sms_.jmcg_sendandcomplete, Fields.jmcg_sms_.to, Fields.jmcg_sms_.description }); if (sms.GetBoolean(Fields.jmcg_sms_.jmcg_sendandcomplete)) { var to = sms.GetActivityParties(Fields.jmcg_sms_.to); if (Context.ParentContext != null && Context.ParentContext.InputParameters.Contains("Target") && Context.ParentContext.InputParameters["Target"] is Entity parentContextTarget && parentContextTarget.Contains(Fields.jmcg_sms_.to)) { to = parentContextTarget.GetActivityParties(Fields.jmcg_sms_.to); } if (to.Count() == 0) { throw new InvalidPluginExecutionException($"The {GetFieldLabel(Fields.jmcg_sms_.to)} Recipient Is Required"); } if (to.Count() != 1) { throw new InvalidPluginExecutionException($"Only 1 Recipient Is Implemented. Ensure Only 1 Contact Is Entered In The {GetFieldLabel(Fields.jmcg_sms_.to)} Field"); } var recipientParty = to.First(); var recipient = recipientParty.GetField(Fields.activityparty_.partyid) as EntityReference; if (recipient == null || recipient.LogicalName != Entities.contact) { throw new InvalidPluginExecutionException($"The {GetFieldLabel(Fields.jmcg_sms_.to)} Recipient Must Be A {XrmService.GetEntityDisplayName(Entities.contact)}"); } var mobileNumber = (string)XrmService.LookupField(recipient.LogicalName, recipient.Id, Fields.contact_.mobilephone); if (string.IsNullOrWhiteSpace(mobileNumber)) { throw new InvalidPluginExecutionException($"The Recipients {XrmService.GetFieldLabel(Fields.contact_.mobilephone, Entities.contact)} Is Empty"); } var smsContent = sms.GetStringField(Fields.jmcg_sms_.description); if (string.IsNullOrWhiteSpace(smsContent)) { throw new InvalidPluginExecutionException($"{GetFieldLabel(Fields.jmcg_sms_.description)} Is Empty"); } var cleanMobileNumber = string.Empty; foreach (var character in mobileNumber) { if (char.IsNumber(character) || character == '+') { cleanMobileNumber = cleanMobileNumber + character; } } if (JosephMSmsSettings.ActuallySendSms) { JosephMSmsService.SendSms(cleanMobileNumber, smsContent, JosephMSmsSettings.SmsSource); } } } }