예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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();
        }