コード例 #1
0
        public void UpdateTagStatistics()
        {
            /// jobから呼ばれるのでPerRequestライフサイクルな_refsContextは使えない
            using (var context = MochaContainer.Resolve <IRefsContext>("job"))
            {
                var query = @"
UPDATE dbo.TagStatistics
  SET RefListcount = (
    SELECT COUNT(*)
      FROM dbo.Tags, dbo.TagUses, dbo.RefListTagUses, dbo.RefLists
      WHERE dbo.TagStatistics.TagId = dbo.Tags.Id
        AND dbo.Tags.Id = dbo.TagUses.TagId
        AND dbo.TagUses.Id = dbo.RefListTagUses.TagUseId
        AND dbo.RefListTagUses.RefListId = dbo.RefLists.Id
        AND dbo.RefLists.PublishingStatus = 0
   )
";
                context.ExecuteSqlCommand(query);

                query = @"
UPDATE dbo.TagStatistics
  SET Favoritecount = (
    SELECT COUNT(*)
      FROM dbo.Tags AS tag, dbo.Favorites AS fav
      WHERE dbo.TagStatistics.TagId = tag.Id
        AND fav.Kind = 2
        AND fav.TagId = tag.Id
   )
";
                context.ExecuteSqlCommand(query);
            }
        }
コード例 #2
0
        private void UpdateAuditValues()
        {
            var now      = DateTime.Now;
            var auditing = (
                from e in ChangeTracker.Entries <IAuditable>()
                where e.State == EntityState.Added || e.State == EntityState.Modified
                select e
                ).ToArray();

            if (auditing.Any())
            {
                var container   = MochaContainer.GetContainer();
                var userContext = container.Resolve <IUserContext>();
                if (!userContext.IsAuthenticated)
                {
                    throw new InvalidOperationException();
                }
                var user = userContext.GetUser();
                foreach (var e in auditing)
                {
                    if (e.State == EntityState.Added)
                    {
                        e.Entity.CreatedUserId = user.Id;
                        e.Entity.CreatedDate   = now;
                    }
                    e.Entity.UpdatedDate   = now;
                    e.Entity.UpdatedUserId = user.Id;
                }
            }
        }
コード例 #3
0
        public void Subscribe <T, TConsumer>() where TConsumer : IMessageConsumer <T>
        {
            var container = MochaContainer.GetContainer();

            var consumerInterfaceType = typeof(IMessageConsumer <T>);
            var name = typeof(TConsumer).FullName;

            container.RegisterType <IMessageConsumer <T>, TConsumer>(name);
        }
コード例 #4
0
ファイル: Bootstrapper.cs プロジェクト: karkn/MochaRefs
        public static void InitContainer(Func <LifetimeManager> perRequestLifetimeManagerProvider)
        {
            var container = MochaContainer.GetContainer();

            container.RegisterType <IRefsContext, RefsContext>(perRequestLifetimeManagerProvider());
            container.RegisterType <ISearchEngine, SearchEngine>(perRequestLifetimeManagerProvider());

            container.RegisterType <IRefsContext, RefsContext>("job");
            container.RegisterType <ISearchEngine, SearchEngine>("job");
        }
コード例 #5
0
        public static void ValidateWritePermission(long?userId)
        {
            var container   = MochaContainer.GetContainer();
            var userContext = container.Resolve <IUserContext>();

            if (userContext.GetUser().Id != userId)
            {
                throw new BusinessException(Errors.InvalidUserWrite, Convert.ToString(userId));
            }
        }
コード例 #6
0
        public void Send <T>(T message)
        {
            var container = MochaContainer.GetContainer();

            var consumerInterfaceType = typeof(IMessageConsumer <T>);
            var resolved  = container.ResolveAll(consumerInterfaceType);
            var consumers = resolved.Cast <IMessageConsumer <T> >();

            foreach (var consumer in consumers)
            {
                consumer.Consume(message);
            }
        }
コード例 #7
0
        /// <summary>Integrates Unity when the application starts.</summary>
        public static void Start()
        {
            MochaContainer.RegisterTypes = UnityConfig.RegisterTypes;
            var container = MochaContainer.GetContainer();

            FilterProviders.Providers.Remove(FilterProviders.Providers.OfType <FilterAttributeFilterProvider>().First());
            FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));

            // TODO: Uncomment if you want to use PerRequestLifetimeManager
            Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
        }
コード例 #8
0
        [OutputCache(Duration = 600)] /// 10分
        public ActionResult NewlyArrivedRefLists()
        {
            var refListHandler = MochaContainer.Resolve <IRefListHandler>();
            var req            = new GetRefListsRequest(
                null, null, null, null, null, null, PublishingStatusConditionKind.PublishOnly,
                0, 10, RefListSortKind.PublishedDateDescending
                );
            var task   = Task.Run(() => refListHandler.GetRefListsAsync(req));
            var result = task.Result;
            var vm     = Mapper.Map <IEnumerable <RefListViewModel> >(result.RefLists);

            return(View("Action/_NewlyArrivedRefLists", vm));
        }
コード例 #9
0
 public User GetUser()
 {
     if (Request.IsAuthenticated)
     {
         var container   = MochaContainer.GetContainer();
         var userContext = container.Resolve <IUserContext>();
         return(userContext.GetUser());
     }
     else
     {
         return(null);
     }
 }
コード例 #10
0
ファイル: IndexBuildJob.cs プロジェクト: karkn/MochaRefs
        public void Execute(IJobExecutionContext context)
        {
            _logger.Info("Begin building index");

            try
            {
                var handler = MochaContainer.Resolve <ISystemHandler>();
                handler.BuildIndex();

                _logger.Info("Finish building index");
            }
            catch (Exception ex)
            {
                _logger.Error("Failed building index" + ex.ToString());
            }
        }
コード例 #11
0
        public void Execute(IJobExecutionContext context)
        {
            _logger.Info("Begin update tag statistics");

            try
            {
                var handler = MochaContainer.Resolve <ISystemHandler>();
                handler.UpdateTagStatistics();

                _logger.Info("Finish updating tag statistics");
            }
            catch (Exception ex)
            {
                _logger.Error("Failed updating tag statistics" + ex.ToString());
            }
        }
コード例 #12
0
ファイル: ListControllerTest.cs プロジェクト: karkn/MochaRefs
        public async Task TestAddByBookmarklet_Get()
        {
            // arrange
            var title         = "タイトル1";
            var url           = "http://www.mochaware.jp/";
            var pagedRefLists = ObjectMother.GetPagedRefLists();
            var queryStrs     = new NameValueCollection()
            {
                { "title", title },
            };

            MapConfig.CreateMaps();
            MochaContainer.RegisterTypes = ObjectMother.RegisterAuthenticatedUserContext;
            MochaContainer.GetContainer();

            var mocks = new ControllerContextMocks();

            mocks.UnvalidatedRequestValues.Setup(u => u.QueryString).Returns(queryStrs);
            mocks.Request.Setup(r => r.IsAuthenticated).Returns(true);

            var handlerMock = new Mock <IRefListHandler>();

            handlerMock.Setup(h => h.GetRefListsAsync(It.IsAny <GetRefListsRequest>())).ReturnsAsync(pagedRefLists);

            var controller = new ListController(null, null, handlerMock.Object, null, null);

            controller.ControllerContext = mocks.CreateControllerContext(controller);

            // act
            var result = await controller.AddByBookmarklet(url) as ViewResult;

            // assert
            var model = result.Model as AddByBookmarkletPageViewModel;

            Assert.IsNotNull(result);
            Assert.AreEqual("", result.ViewName);
            Assert.AreEqual(
                pagedRefLists.RefLists.FirstOrDefault().Title,
                model.RefLists.FirstOrDefault().Title
                );
        }
コード例 #13
0
        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var container = MochaContainer.GetContainer();

            var user           = filterContext.HttpContext.User;
            var identityUserId = user.Identity.GetUserId();

            var refsUser = default(User);

            if (identityUserId != null)
            {
                var handler = container.Resolve <IUserHandler>();
                refsUser = handler.GetUser(Convert.ToInt64(identityUserId));
            }
            filterContext.HttpContext.Items[WebConsts.RefsUserKey] = refsUser;

            filterContext.Controller.ViewBag.User        = refsUser;
            filterContext.Controller.ViewBag.Id          = refsUser == null ? "" : refsUser.Id.ToString();
            filterContext.Controller.ViewBag.UserName    = refsUser == null ? "" : refsUser.UserName;
            filterContext.Controller.ViewBag.DisplayName = refsUser == null ? "" : refsUser.DisplayName;
        }
コード例 #14
0
        public static void Config()
        {
            var channel = MochaContainer.Resolve <ISubscribableChannel>();

            channel.Subscribe <RefListUpdatedMessage, RefListUpdatedMessageConsumer>();
        }
コード例 #15
0
        public void BuildIndex()
        {
            var search = MochaContainer.Resolve <ISearchEngine>("job");

            search.BuildIndex();
        }