public async Task <OutbreakEvents> Execute(CreateOutbreakNote command) { var eventId = (int)await sequenceGenerator.GetNextAsync(SequenceType.OutbreakEventId); OutbreakEvents newEvent = new OutbreakEvents { IdOutbreak = command.OutbreakId, CdEventType = command.NoteType, IdEvent = eventId, CdSubType = string.Empty, DsDesc = command.Note, IdSequence = 0 }; writeContext.OutbreakEvents.Add(newEvent); await writeContext.SaveChangesAsync(); return(newEvent); }
private async Task CreateEvent(Data.Outbreak outbreak, string outbreakEventType, string type, DateTime eventDate, string subType = "") { var Id = (int)await sequenceGenerator.GetNextAsync(SequenceType.OutbreakEventId); for (int i = 0; i < type.Length; i += 1000) { var obEvent = new OutbreakEvents { IdOutbreak = outbreak.IdOutbreak, CdEventType = outbreakEventType, CdSubType = subType, DsDesc = type.Substring(i, Math.Min(type.Length - i, 1000)), DtEvent = eventDate, IdSequence = i / 1000, IdEvent = Id }; outbreak.OutbreakEvents.Add(obEvent); } }
public async Task Execute(SubmitEpicomPost command) { //var outbreak = await writeContext.Outbreak.FindAsync(command.OutbreakId); //outbreak.IdEpicomPending = command.PendingPostId; //await writeContext.SaveChangesAsync(); var currentForumId = await outbreakEventsRepository.GetEventDescription(command.OutbreakId, "EPICOM_FORUM"); var currentTopicId = await outbreakEventsRepository.GetEventDescription(command.OutbreakId, "EPICOM_TOPIC"); var currentTitle = await outbreakEventsRepository.GetEventDescription(command.OutbreakId, "EPICOM_TITLE"); List <String> chunks = new List <String>(); int os = 0; while (os < command.Message.Length) { int s = Math.Min(1000, command.Message.Length - os); chunks.Add(command.Message.Substring(os, s)); os += s; } var currentMessageBody = ""; var message = await writeContext.OutbreakEvents .Where(x => x.CdEventType.Equals("EPICOM_MESSAGE") && x.IdOutbreak == command.OutbreakId) .OrderByDescending(x => x.IdKey) .Select(x => new { sequenceId = x.IdSequence, desc = x.DsDesc }) .ToListAsync(); foreach (var m in message) { currentMessageBody = m.desc + currentMessageBody; if (m.sequenceId == 0) { break; } } var EventId = (int)await sequenceGenerator.GetNextAsync(SequenceType.OutbreakEventId); OutbreakEvents PendingPostEvent = new OutbreakEvents { IdOutbreak = command.OutbreakId, CdEventType = "EPICOM_PENDING_ID", IdEvent = EventId, CdSubType = "", DsDesc = command.PendingPostId.ToString(), IdSequence = 0, IdAdded = command.IdSubmitted }; if (!writeContext.OutbreakEvents.Any(outbreakEvent => (outbreakEvent.DsDesc.Equals(PendingPostEvent.DsDesc)) && (outbreakEvent.CdEventType.Equals(PendingPostEvent.CdEventType) && (outbreakEvent.IdOutbreak == PendingPostEvent.IdOutbreak)))) { writeContext.OutbreakEvents.Add(PendingPostEvent); } if (!command.ForumId.ToString().Equals(currentForumId)) { EventId = (int)await sequenceGenerator.GetNextAsync(SequenceType.OutbreakEventId); OutbreakEvents ForumEvent = new OutbreakEvents { IdOutbreak = command.OutbreakId, CdEventType = "EPICOM_FORUM", IdEvent = EventId, CdSubType = "", DsDesc = command.ForumId.ToString(), IdSequence = 0, IdAdded = command.IdSubmitted }; writeContext.OutbreakEvents.Add(ForumEvent); } if (!command.TopicId.ToString().Equals(currentTopicId)) { EventId = (int)await sequenceGenerator.GetNextAsync(SequenceType.OutbreakEventId); OutbreakEvents TopicEvent = new OutbreakEvents { IdOutbreak = command.OutbreakId, CdEventType = "EPICOM_TOPIC", IdEvent = EventId, CdSubType = "", DsDesc = command.TopicId.ToString(), IdSequence = 0, IdAdded = command.IdSubmitted }; writeContext.OutbreakEvents.Add(TopicEvent); } if (!command.Title.Equals(currentTitle)) { EventId = (int)await sequenceGenerator.GetNextAsync(SequenceType.OutbreakEventId); OutbreakEvents TitleEvent = new OutbreakEvents { IdOutbreak = command.OutbreakId, CdEventType = "EPICOM_TITLE", IdEvent = EventId, CdSubType = "", DsDesc = command.Title, IdSequence = 0, IdAdded = command.IdSubmitted }; writeContext.OutbreakEvents.Add(TitleEvent); } if (!String.IsNullOrEmpty(command.Message) && !command.Message.Equals(currentMessageBody)) { int sequence = 0; OutbreakEvents MessageEvent; var EId = (int)await sequenceGenerator.GetNextAsync(SequenceType.OutbreakEventId); foreach (string chunk in chunks) { MessageEvent = new OutbreakEvents { IdOutbreak = command.OutbreakId, CdEventType = "EPICOM_MESSAGE", IdEvent = EId, CdSubType = "", DsDesc = chunk, IdSequence = sequence, IdAdded = command.IdSubmitted }; writeContext.OutbreakEvents.Add(MessageEvent); sequence += 1; } } await writeContext.SaveChangesAsync(); }