public async Task <bool> CreateAsync(TriggerRouterViewModel model, IDataSource dataSource)
        {
            var triggerRouter = new TriggerRouter
            {
                TriggerId = model.Trigger.Id.Value,
                RouterId  = model.Router.Id.Value
            };

            await this.DbContext.TriggerRouter.AddAsync(triggerRouter);

            bool result = false;

            try
            {
                await this.DbContext.SaveChangesAsync();

                model.Id = model.Id;
                result   = true;
            }
            catch { }

            return(result);
        }
        public Task <IDataSourceResponse <TriggerRouterViewModel> > ReadAsync(DataSourceRequest request)
        {
            var responseData = this.DbContext.TriggerRouter
                               .Include("Router")
                               .Include("Router.Project")
                               .Include("Router.SourceNodeGroup").Include("Router.SourceNodeGroup.Project")
                               .Include("Router.TargetNode").Include("Router.TargetNode.NodeGroup")
                               .Include("Trigger").Include("Trigger.Channel")
                               .Select(tr => tr);

            if (request.ServerFiltering != null)
            {
                var filter   = request.ServerFiltering.FilterCollection.SingleOrDefault(f => f.Field == "RouterId");
                int routerId = Convert.ToInt32(filter.Value);
                responseData = responseData.Where(tr => tr.RouterId == routerId);
            }

            IDataSourceResponse <TriggerRouterViewModel> response = new DataSourceResponse <TriggerRouterViewModel> {
                TotalRowCount = responseData.Count()
            };

            if (request.ServerPaging != null)
            {
                int skip = Math.Max(request.ServerPaging.PageSize * (request.ServerPaging.Page - 1), 0);
                responseData = responseData.OrderBy(tr => tr.TriggerId).ThenBy(tr => tr.RouterId).Skip(skip).Take(request.ServerPaging.PageSize);
            }

            var dataCollection = responseData.ToList();

            foreach (var data in dataCollection)
            {
                response.DataCollection.Add(TriggerRouterViewModel.NewInstance(data));
            }

            return(Task.FromResult(response));
        }
 public Task <bool?> UpdateAsync(string key, TriggerRouterViewModel model, IDataSource dataSource)
 {
     throw new NotImplementedException();
 }