public void Consume(TestInfoRequest msg)
        {
            var testInfoFromDb = new TestInfoById {
                Id = msg.TestInfoId
            }.Load(session);
            var testInfo = testInfoFromDb == null ? null:
                           new TestInfo
            {
                Checker          = testInfoFromDb.Checker,
                CheckerArguments = testInfoFromDb.CheckerArguments,
                TestVerifier     = testInfoFromDb.TestVerifier,
                Id    = testInfoFromDb.Id,
                Tests = testInfoFromDb.Tests.Select(x => new Test
                {
                    Description = x.Description,
                    Input       = x.Input,
                    Output      = x.Output,
                    IsValid     = x.IsValid,
                    Points      = x.Points
                }).ToArray()
            };

            bus.Reply(new TestInfoEnvelope {
                TestInfo = testInfo
            });
        }
Exemple #2
0
        public void Consume(PackTestInfo msg)
        {
            var testInfo = new TestInfoById {
                Id = msg.TestInfoId
            }.Load(session);
            var zipArchive = zipper.ZipTests(testInfo.Tests);
            var archiveUrl = archivedTestInfoRepository.StoreTestInfoArchive(msg.TestInfoId, zipArchive);

            bus.Notify(new PackTestInfoCompleted {
                ArchiveUrl = archiveUrl, TestInfoId = msg.TestInfoId
            });
        }
Exemple #3
0
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            if (lookFor == LookFor.SmartAss)
            {
                lookFor = LookFor.Contest;
                foreach (var kvp in smartAssLookUp)
                {
                    if (filterContext.Controller.ValueProvider.GetValue(kvp.Key) != null)
                    {
                        lookFor = kvp.Value;
                        param   = kvp.Key;
                        break;
                    }
                }
            }

            var     rawValue = filterContext.Controller.ValueProvider.GetValue(param).AttemptedValue;
            object  id       = lookFor == LookFor.TestInfo ? Guid.Parse(rawValue) : (object)Convert.ToInt32(rawValue);
            Contest contest;

            switch (lookFor)
            {
            case LookFor.TestInfo:
                contest = new TestInfoById {
                    Id = (Guid)id
                }.Load(Session).Problem.Contest;
                break;

            case LookFor.Contest:
                contest = Session.Get <Contest>(id);
                break;

            case LookFor.Problem:
                contest = Session.Get <Problem>(id).Contest;
                break;

            case LookFor.Test:
                contest = Session.Get <Test>(id).Problem.Contest;
                break;

            default:
                throw new InvalidOperationException("Другие LookFor не подходят");
            }


            if (!AuthorizationService.IsAllowed(UserSession.CurrentUser, contest, op.ToOperation()))
            {
                var expl = AuthorizationService.GetAuthorizationInformation(UserSession.CurrentUser, contest, op.ToOperation()).ToString();
                filterContext.Result = new UnauthorizedViewResult(op, expl);
            }
        }