Ejemplo n.º 1
0
        private static void Fail(MassCommunication massComm, Exception reason)
        {
            try
            {
                massComm.MassCommunicationStatus = MassCommunicationStatus.MassCommunicationStatusEnum.Failure;
                massComm.StatusMessage           = "Type: " + reason.GetType() + " - Message: " + reason.Message;

                MassCommStatistics.UpdateMassCommCounters(massComm);
            }
            catch (Exception ex)
            {
                Logging.LogError(ex);
            }
        }
Ejemplo n.º 2
0
        private static void UpdateStatus(MassCommunication massComm, List <SendResult> results)
        {
            massComm.MassCommunicationStatus = MassCommunicationStatus.MassCommunicationStatusEnum.Sent;

            var count = massComm.Recipients.Count;
            var sent  = results.Count(x => x.IsSuccess);
            var fail  = count - sent;

            massComm.MassCommunicationStatus = fail > 0 ? MassCommunicationStatus.MassCommunicationStatusEnum.Error : MassCommunicationStatus.MassCommunicationStatusEnum.Sent;
            massComm.StatusMessage           = $"Sent: {sent} Unsent: {fail} Total: {count}";

            MassCommStatistics.UpdateMassCommCounters(massComm);
            MassCommStatistics.RecipientTotalProcessed      += count;
            MassCommStatistics.RecipientTotalSentFlawlessly += sent;
            MassCommStatistics.RecipientTotalErrors         += fail;
        }
Ejemplo n.º 3
0
        public void ProcessAvailableMassComms()
        {
            try
            {
                IsBusy = true;

                MassCommStatistics.ServiceTotalCycles++;

                var lstMc = _repository.MassCommunicationRepository.GetUnprocessedMassCommunications();

                if (lstMc.Count == 0)
                {
                    MassCommStatistics.ServiceUninterruptedSleepCycles++;
                    MassCommStatistics.AddJournalEntry("No mass communications found to process?");

                    return;
                }

                MassCommStatistics.StopWatchBegin();

                var lstTasks = new List <Task>(lstMc.Count);

                //Process each mass communication in a separate thread because you can
                foreach (var massComm in lstMc)
                {
                    lstTasks.Add(Task.Factory.StartNew(() => ProcessIndividualMassCommEntity(massComm)));
                }

                Task.WaitAll(lstTasks.ToArray());
            }
            finally
            {
                IsBusy = false;

                if (MassCommStatistics.IsStopWatchStarted)
                {
                    MassCommStatistics.StopWatchEnd();
                }
            }
        }