public TaskExecutionMessage Execute(TaskExecutionPayload payloadObj) { IManagerBatchItem batchItem = new ManagerBatchItem(); var status = batchItem.BatchItemUpdateNextRunTime(payloadObj.TenantId, payloadObj.Id); var executionMessage = new TaskExecutionMessage(); executionMessage.Message = TaskExecutionCode.Success; return(executionMessage); }
public static Guid SaveEmail(Guid tenantId, Guid userId, EmailTemplate template, string emailRecipient, string name, string referenceEntity) { IManagerScheduler _schedulerManager = new ManagerScheduler(); if (template.Body != null && !string.IsNullOrEmpty(template.Body.Value)) { ISettingManager _iSettingManager = new SettingManager(); IEntityResourceManager _iEntityResourceManager = new VPC.Framework.Business.EntityResourceManager.Contracts.EntityResourceManager(); IMetadataManager _iMetadataManager = new VPC.Framework.Business.MetadataManager.Contracts.MetadataManager(); IManagerBatchItem _managerBatchItem = new ManagerBatchItem(); IManagerBatchType _managerBatchType = new ManagerBatchType(); var emailSubType = _iMetadataManager.GetSubTypes("email"); var sendername = _iSettingManager.GetSenderNameByContext(tenantId, SettingContextTypeEnum.EMAIL); dynamic jsonObject = new JObject(); jsonObject.Body = template.Body.Value.Replace("'", "''"); jsonObject.Sender = sendername; jsonObject.Recipient = emailRecipient; jsonObject.Date = HelperUtility.GetCurrentUTCDate(); jsonObject.Subject = template.Title.Value; var batchType = _managerBatchType.GetBatchTypeByContext(tenantId, BatchTypeContextEnum.Email); if (batchType != null) { var myObj = new JObject(); myObj.Add("email", jsonObject); //Save Email var returnId = _iEntityResourceManager.SaveResult(tenantId, userId, "email", myObj, emailSubType[0].Name.ToString()); //Save Batch item var batchItemId = Guid.NewGuid(); _managerBatchItem.BatchItemCreate(tenantId, (!string.IsNullOrEmpty(batchType.ItemTimeout.Value) ? Convert.ToInt32(batchType.ItemTimeout.Value) : (int?)null) , new BatchItem { BatchItemId = batchItemId, BatchTypeId = Guid.Parse(batchType.InternalId.Value), Name = string.Format("{0}-{1}{2}{3}", name, DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day), Priority = (!string.IsNullOrEmpty(batchType.Priority.Value) ? Convert.ToInt32(batchType.Priority.Value) : (int?)null), RetryCount = 0, EntityId = referenceEntity, ReferenceId = returnId, Status = EmailEnum.ReadyToSend, NextRunTime = Convert.ToInt32(batchType.Type.Value) == (int)BatchTypeEnum.Scheduled ? _schedulerManager.GetNextRunDateTime(tenantId, new Guid(batchType.Scheduler.InternalId.Value)) : DateTime.MinValue, // NextRunTime= CalCulateNextRunTime(tenantId,new Guid("57AAB7B8-326E-431B-890A-56D099CB429F")), AuditDetails = new AuditDetail { CreatedBy = userId } }); return(batchItemId); } } return(Guid.Empty); }
void IBatchTypes.OnExecute(dynamic obj) { VPC.Entities.BatchType.BatchType batchType = (VPC.Entities.BatchType.BatchType)obj[0]; var tenantId = Guid.Parse(batchType.TenantId.Value); try { ISettingManager _iSettingManager = new SettingManager(); IEntityResourceManager _iEntityResourceManager = new VPC.Framework.Business.EntityResourceManager.Contracts.EntityResourceManager(); IManagerBatchItem _managerBatchItem = new ManagerBatchItem(); var result = _iSettingManager.GetSettingsByContext(tenantId, SettingContextTypeEnum.EMAIL); if (result != null) { EmailSenderOptions options = Newtonsoft.Json.JsonConvert.DeserializeObject <EmailSenderOptions>(result.Content); //Get Batch Item var allBatchItems = _managerBatchItem.GetBatchItems(tenantId, new Guid(batchType.InternalId.Value), (batchType.ItemRetryCount.Value.Length > 0 ? (int?)Int32.Parse(batchType.ItemRetryCount.Value) : (int?)null)); foreach (var allBatchItem in allBatchItems) { try { var queryContext = new QueryContext { Fields = "Body,Sender,Recipient,Subject,Id" }; DataTable templatedt = _queryManager.GetResultById(tenantId, "email", allBatchItem.ReferenceId, queryContext); _managerBatchItem.BatchItemUpdateStartTime(tenantId, allBatchItem.BatchItemId); var email = EntityMapper <Email> .Mapper(templatedt); SendEmail(tenantId, allBatchItem, email.Recipient.Value, email.Subject.Value, email.Body.Value, options); //Update batch History _managerBatchItem.BatchHistoryCreate(tenantId, new BatchItemHistory { BatchHistoryId = Guid.NewGuid(), BatchItemId = allBatchItem.BatchItemId, EntityId = allBatchItem.EntityId, ReferenceId = allBatchItem.ReferenceId, Status = EmailEnum.Send, RunTime = allBatchItem.NextRunTime }); //Update Email Status _iEntityResourceManager.UpdateSpecificField(tenantId, "email", allBatchItem.ReferenceId, "Status", ((int)EmailEnum.Send).ToString()); } catch (System.Exception ex) { _log.Error("An error has occurred while sending email", ex.Message); //Update batch History _managerBatchItem.BatchHistoryCreate(tenantId, new BatchItemHistory { BatchHistoryId = Guid.NewGuid(), BatchItemId = allBatchItem.BatchItemId, EntityId = allBatchItem.EntityId, ReferenceId = allBatchItem.ReferenceId, Status = EmailEnum.Fail, RunTime = allBatchItem.NextRunTime, FailedReason = ex.Message }); //Update Batch item status _managerBatchItem.BatchItemUpdate(tenantId, (batchType.ItemRetryCount.Value.Length > 0 ? (int?)Int32.Parse(batchType.ItemRetryCount.Value) : (int?)null), new BatchItem { BatchItemId = allBatchItem.BatchItemId, Status = EmailEnum.Fail, FailedReason = ex.Message }); //Update Email Status _iEntityResourceManager.UpdateSpecificField(tenantId, "email", allBatchItem.ReferenceId, "Status", ((int)EmailEnum.Fail).ToString()); throw ex; } //Update Batch item status _managerBatchItem.BatchItemUpdateStatus(tenantId, new BatchItem { Status = EmailEnum.Send, BatchItemId = allBatchItem.BatchItemId }); } } else { _log.Error("Email gateway not configured"); } } catch (System.Exception ex) { _log.Error("Email send failed", ex.Message); } }