private void LogResponse(SendTextRequest request, SendTextResponse response) { Logger.Current.Verbose("Request received for logging text response"); //SentText & SentTextDetails Table var sentText = new SentTextDb { Token = request.TokenGuid, RequestGuid = request.RequestGuid, CreatedDate = DateTime.Now, }; unitOfWork.SentTextRepository.Add(sentText); unitOfWork.Commit(); SentTextDb sentTextdb = unitOfWork.SentTextRepository.FirstOrDefault(mr => mr.RequestGuid == request.RequestGuid); var sentTextDetail = new SentTextDetailsDb { TextResponseID = sentTextdb.TextResponseID, From = request.From, To = request.To.ToPlainString(), SenderID = request.SenderId, Message = request.Message, Status = (byte)response.StatusID, ServiceResponse = response.ServiceResponse }; unitOfWork.SentTextDetailsRepository.Add(sentTextDetail); unitOfWork.Commit(); Logger.Current.Verbose("Logging text response was successful"); }
private void QueueMessages(List <SendTextRequest> request) { var batchLoad = 300; var queueTime = DateTime.UtcNow; var iterations = (request.Count / batchLoad); if ((request.Count % batchLoad) > 0) { iterations++; } Logger.Current.Verbose("Request received for queueing list of text requests"); for (int i = 0; i < iterations; i++) { var currentIterations = request.Skip(i * batchLoad).Take(batchLoad).ToList(); currentIterations.ForEach(item => { this.unitOfWork.SentTextRepository.Add(new SentTextDb { CreatedDate = DateTime.UtcNow, RequestGuid = item.RequestGuid, Token = item.TokenGuid, }); unitOfWork.Commit(); SentTextDb sentTextdb = unitOfWork.SentTextRepository.Single(mr => mr.RequestGuid == item.RequestGuid); this.unitOfWork.SendTextQueueRepository.Add(new SendTextQueueDb { TokenGuid = item.TokenGuid, RequestGuid = item.RequestGuid, //From = item.From, //PriorityID = item.PriorityID, ScheduledTime = item.ScheduledTime, QueueTime = queueTime, //StatusID = CommunicationStatus.Queued, //ServiceResponse = string.Empty }); this.unitOfWork.SentTextDetailsRepository.Add(new SentTextDetailsDb { TextResponseID = sentTextdb.TextResponseID, From = item.From, To = item.To.ToPlainString(), SenderID = item.SenderId, Message = item.Message, Status = (byte)CommunicationStatus.Queued //ServiceResponse = response.ServiceResponse }); }); unitOfWork.Commit(); } Logger.Current.Verbose("Queueing text requests was successful"); }
public void UpdateScheduledReminder(Guid requestGuid, SendTextRequest request) { Logger.Current.Verbose("Request received for updating scheduled reminder from SendTextQueue"); if (requestGuid != null && request != null) { SendTextQueueDb sendTextQueue = this.unitOfWork.SendTextQueueRepository.FirstOrDefault(f => f.RequestGuid == requestGuid); if (sendTextQueue != null) { sendTextQueue.QueueTime = DateTime.UtcNow; sendTextQueue.ScheduledTime = request.ScheduledTime; } SentTextDetailsDb sendTextDetail = new SentTextDetailsDb(); SentTextDb textResponse = this.unitOfWork.SentTextRepository.FirstOrDefault(f => f.RequestGuid == requestGuid); if (textResponse != null) { sendTextDetail = this.unitOfWork.SentTextDetailsRepository.FirstOrDefault(f => f.TextResponseID == textResponse.TextResponseID); } if (sendTextDetail != null) { sendTextDetail.From = request.From; sendTextDetail.Message = request.Message; sendTextDetail.SenderID = request.SenderId; sendTextDetail.To = request.To.FirstOrDefault(); } if (sendTextQueue == null && sendTextDetail != null) { this.unitOfWork.SendTextQueueRepository.Add(new SendTextQueueDb { TokenGuid = request.TokenGuid, RequestGuid = request.RequestGuid, //From = item.From, //PriorityID = item.PriorityID, ScheduledTime = request.ScheduledTime, QueueTime = DateTime.UtcNow, //StatusID = CommunicationStatus.Queued, //ServiceResponse = string.Empty }); } unitOfWork.Commit(); } }