コード例 #1
0
 public DataHandlerCounter(EventDataHandler <T, V> dataHandler, IContext fallback)
     : base(fallback)
 {
     this.dataHandler = dataHandler;
     EventDataHandlerUtil.RegisterProcessAllShutdownHook <T, V>(dataHandler);
     EventDataHandlerUtil.RegisterTimedProcessing <T, V>(dataHandler);
 }
コード例 #2
0
ファイル: EventHandlers.cs プロジェクト: angyLe/Events
        public async Task <Tuple <Event, ErrorViewModel> > Handle(SaveEventCommand cmd, CancellationToken cancellationToken)
        {
            Tuple <Event, ErrorViewModel> result    = null;
            Event            resultEvent            = null;
            EventTranslation resultEventTranslation = null;

            if (!cmd.EventId.HasValue)
            {
                resultEvent = new Event();
                EventDataHandler.SetData(resultEvent, cmd);
                db.Events.Add(resultEvent);

                resultEventTranslation = new EventTranslation();
                EventTranslationDataHandler.SetData(resultEventTranslation, cmd);
                resultEventTranslation.Event = resultEvent;
                db.EventTranslations.Add(resultEventTranslation);
            }
            else
            {
                resultEvent = db.Events.Where(e => e.EventId == cmd.EventId).FirstOrDefault();

                if (resultEvent == null)
                {
                    logger.LogError("Existing event was not found when tried to update it. EventId: " + cmd.EventId);
                    result = new Tuple <Event, ErrorViewModel>(null, new ErrorViewModel()
                    {
                        ErrorCode = (int)AppError.DbRecordNotFound
                    });
                    return(result);
                }

                EventDataHandler.SetData(resultEvent, cmd);
                db.Events.Update(resultEvent);

                if (!cmd.EventTranslationId.HasValue)
                {
                    resultEventTranslation = new EventTranslation();
                    EventTranslationDataHandler.SetData(resultEventTranslation, cmd);
                    resultEventTranslation.Event = resultEvent;
                    db.EventTranslations.Add(resultEventTranslation);
                }
                else
                {
                    resultEventTranslation = db.EventTranslations.Where(x => x.EventTranslationId == cmd.EventTranslationId).FirstOrDefault();

                    if (resultEventTranslation == null)
                    {
                        logger.LogError("Existing event translation was not found when trying to udpate it. EventTranslationId: " + cmd.EventTranslationId);
                        result = new Tuple <Event, ErrorViewModel>(null, new ErrorViewModel()
                        {
                            ErrorCode = (int)AppError.DbRecordNotFound
                        });
                        return(null);
                    }

                    EventTranslationDataHandler.SetData(resultEventTranslation, cmd);
                    db.EventTranslations.Update(resultEventTranslation);
                }
            }

            await db.SaveChangesAsync();

            result = new Tuple <Event, ErrorViewModel>(resultEvent, null);
            return(result);
        }
コード例 #3
0
 public DataHandlerCounter(EventDataHandler <T, V> dataHandler)
     : this(dataHandler, UnknownContext.PERMISSIVE)
 {
 }