コード例 #1
0
        /// <summary> Создать контекст </summary>
        public IOperationContext <IGraphLabsContext> Create()
        {
            var ctx = new GraphLabsContext();

            ctx.Database.Log = s => Debug.WriteLine(s);
            return(new OperationContextImpl(new GraphLabsContextImpl(ctx), new ChangesTracker(ctx)));
        }
コード例 #2
0
        public TestInfo(GraphLabsContext ctx, int resultId)
        {
            var result = ctx.Results.FirstOrDefault(e => e.Id == resultId);

            if (result == null)
            {
                throw new Exception("Результат не найден!");
            }
            var testResults = result
                              .AbstractResultEntries
                              .OfType <TestResult>()
                              .ToArray();

            if (!testResults.Any())
            {
                throw new Exception("В тестпуле не оказалось заданий!");
            }
            var testPool = testResults.First().TestPoolEntry.TestPool;

            TestPoolName = testPool.Name;
            TestEntries  = new TestResultInfo[testResults.Length];
            for (int i = 0; i < testResults.Length; i++)
            {
                TestEntries.SetValue(new TestResultInfo
                {
                    QuestionName = testResults.ElementAt(i).TestPoolEntry.TestQuestion.Question,
                    Score        = testResults.ElementAt(i).TestPoolEntry.Score,
                    Mark         = testResults.ElementAt(i).Score
                }, i);
            }
        }
コード例 #3
0
        private static async Task InitializeDb(GraphLabsContext context, InitialData initialData)
        {
            await context.Database.MigrateAsync();

            if (!context.TaskModules.Any())
            {
                foreach (var module in initialData.GetTaskModules())
                {
                    context.TaskModules.Add(module);
                }
                await context.SaveChangesAsync();
            }
            if (!context.TaskVariants.Any())
            {
                foreach (var variant in initialData.GetTaskVariants(context.TaskModules))
                {
                    context.TaskVariants.Add(variant);
                }
                await context.SaveChangesAsync();
            }
            if (!context.Users.Any())
            {
                foreach (var user in initialData.GetUsers())
                {
                    context.Users.Add(user);
                }
                await context.SaveChangesAsync();
            }
        }
コード例 #4
0
        private string[] GetProblems(GraphLabsContext ctx, int id)
        {
            string[] result;
            var      problems =
                ctx.AbstractStudentActions.OfType <StudentAction>().Where(tr => tr.TaskResult.Result.Id == id && tr.Penalty != 0)
                .ToArray();

            if (problems.Length == 0)
            {
                result    = new string[1];
                result[0] = "У вас нет проблемных зон.";
            }
            else
            {
                result = new string[0];
                for (int i = 0; i < problems.Length; i++)
                {
                    bool flag = true;
                    for (int j = 0; j < problems.Length && j != i; j++)
                    {
                        if (problems[i].Description == problems[j].Description)
                        {
                            flag = false;
                        }
                    }
                    if (flag)
                    {
                        result = InsertDescription(problems[i].Description, result);
                    }
                }
            }

            return(result);
        }
コード例 #5
0
 /// <summary> Фабрика репозиториев </summary>
 public RepositoryFactory(GraphLabsContext context, ISystemDateService systemDateService, ITasksContext tasksContext)
 {
     Contract.Requires(context != null);
     _context           = context;
     _systemDateService = systemDateService;
     _tasksContext      = tasksContext;
 }
コード例 #6
0
ファイル: RepositoryBase.cs プロジェクト: eakarpov/Web
        /// <summary> Базовый репозиторий </summary>
        protected RepositoryBase(GraphLabsContext context)
        {
            Contract.Requires(context != null);

            _disposed = false;
            Context   = context;
        }
コード例 #7
0
ファイル: DataModelTests.cs プロジェクト: eakarpov/Web
        public void TestUserLoginIsUnique()
        {
            const string EMAIL = "*****@*****.**";

            RemoveByCriteria <User>(u => u.Email == EMAIL);

            var user1 = GraphLabsContext.Users.Create();

            user1.Name         = TEST_NAME;
            user1.Email        = EMAIL;
            user1.FatherName   = "FatherName";
            user1.PasswordHash = "PasswordHash";
            user1.Surname      = "Surname";
            GraphLabsContext.Users.Add(user1);
            GraphLabsContext.SaveChanges();

            var user2 = GraphLabsContext.Users.Create();

            user2.Name         = TEST_NAME;
            user2.Email        = EMAIL;
            user2.FatherName   = "FatherName";
            user2.PasswordHash = "PasswordHash";
            user2.Surname      = "Surname";
            GraphLabsContext.Users.Add(user2);

            Assert.Throws <SqlException>(() => GraphLabsContext.SaveChanges());
        }
コード例 #8
0
 public TaskModulesController(GraphLabsContext context,
                              IHostingEnvironment hostingEnvironment,
                              IContentTypeProvider contentTypeProvider)
 {
     _db = context;
     _hostingEnvironment  = hostingEnvironment;
     _contentTypeProvider = contentTypeProvider;
 }
コード例 #9
0
        public JSONTaskResultInfo(GraphLabsContext ctx, int id)
        {
            var taskResult = ctx.AbstractResultEntries.OfType <TaskResult>().Single(task => task.Id == id);

            Id       = id;
            TaskName = taskResult.TaskVariant.Task.Name;
            Actions  = GetStudentActionsInfo(ctx, id);
            Result   = 0;
        }
コード例 #10
0
        private StudentActionInfo[] GetStudentActionsInfo(GraphLabsContext ctx, int id)
        {
            var actions        = ctx.AbstractStudentActions.OfType <StudentAction>().Where(action => action.TaskResult.Id == id).ToArray();
            var studentActions = new StudentActionInfo[actions.Length];

            for (int i = 0; i < actions.Length; i++)
            {
                studentActions[i] = new StudentActionInfo(actions[i]);
            }
            return(studentActions);
        }
コード例 #11
0
        private TaskInfo[] GetTaskInfo(GraphLabsContext ctx, int id, long studentId)
        {
            var tasks  = ctx.AbstractResultEntries.OfType <TaskResult>().Where(task => task.Result.Student.Id == studentId && task.Result.Id == id).ToArray();
            var result = new TaskInfo[tasks.Length];

            for (int i = 0; i < result.Length; i++)
            {
                result[i] = new TaskInfo(tasks, i);
            }
            return(result);
        }
コード例 #12
0
ファイル: DataModelTests.cs プロジェクト: eakarpov/Web
        private void RemoveByCriteria <T>(Expression <Func <T, bool> > predicate) where T : class
        {
            var set      = GraphLabsContext.Set <T>();
            var entities = set.Where(predicate);

            foreach (var entity in entities)
            {
                set.Remove(entity);
            }
            GraphLabsContext.SaveChanges();
        }
コード例 #13
0
        public TaskModulesController(GraphLabsContext context, InMemoryInitialData initialData)
        {
            _db = context;

            if (!context.TaskModules.Any())
            {
                foreach (var module in initialData.GetTaskModules())
                {
                    context.TaskModules.Add(module);
                }
                context.SaveChanges();
            }
        }
コード例 #14
0
        public JSONResultLabResultInfo(GraphLabsContext ctx, int id, long studentId)
        {
            //var labVar = ctx.LabVariants.Single(labvar => labvar.Id == id);
            var result        = ctx.Results.Single(res => res.Id == id);
            var labVar        = result.LabVariant.Id;
            var labName       = result.LabVariant.LabWork.Name;
            var resultStudent = ctx.Results.Where(tr => tr.Student.Id == studentId).ToArray();
            var groupId       = resultStudent[0].Student.Group.Id;

            Result         = result.Id;
            LabName        = labName;
            StudentsNumber = ctx.Groups.Count(tr => tr.Id == groupId);
            Place          = GetPlace(ctx, labVar, studentId);
            Tasks          = GetTaskInfo(ctx, id, studentId);
            Problems       = GetProblems(ctx, id);
            HasTestPool    = result.LabVariant?.Id;
        }
コード例 #15
0
        private int GetPlace(GraphLabsContext ctx, long id, long studentId)
        {
            var students = ctx.Results.Where(tr => tr.LabVariant.Id == id).OrderBy(td => td.Score).ToArray();
            var place    = 1;

            for (int i = 0; i < students.Length; i++)
            {
                if (students[i].Student.Id != studentId)
                {
                    place++;
                }
                else
                {
                    return(place);
                }
            }
            return(place);
        }
コード例 #16
0
ファイル: DataModelTests.cs プロジェクト: eakarpov/Web
        public void TestDoSmth()
        {
            RemoveByCriteria <User>(u => u.Name == TEST_NAME);

            Assert.AreEqual(0, GraphLabsContext.Users.Count(u => u.Name == TEST_NAME));

            var user = GraphLabsContext.Users.Create();

            user.Name         = TEST_NAME;
            user.Email        = "*****@*****.**";
            user.FatherName   = "FatherName";
            user.PasswordHash = "PasswordHash";
            user.Surname      = "Surname";
            GraphLabsContext.Users.Add(user);

            GraphLabsContext.SaveChanges();

            Assert.AreEqual(1, GraphLabsContext.Users.Count(u => u.Name == TEST_NAME));
        }
コード例 #17
0
        /// <summary> Менеджер изменений </summary>
        public ChangesTracker(GraphLabsContext context)
        {
            Contract.Requires(context != null);

            _context = context;
        }
コード例 #18
0
 /// <summary> Репозиторий с тестпулами </summary>
 public TestPoolRepository(GraphLabsContext context)
     : base(context)
 {
 }
コード例 #19
0
ファイル: LabRepository.cs プロジェクト: eakarpov/Web
 /// <summary> Репозиторий с лабораторными работами </summary>
 public LabRepository(GraphLabsContext context, ITasksContext taskRepository)
     : base(context)
 {
     _taskRepository = taskRepository;
 }
コード例 #20
0
 /// <summary> Репозиторий с группами </summary>
 public CategoryRepository(GraphLabsContext context)
     : base(context)
 {
 }
コード例 #21
0
ファイル: SystemDateService.cs プロジェクト: eakarpov/Web
 public SystemDateService(GraphLabsContext context)
 {
     _context = context;
 }
コード例 #22
0
 /// <summary> Репозиторий с пользователями </summary>
 public UserRepository(GraphLabsContext context)
     : base(context)
 {
 }
コード例 #23
0
ファイル: GraphLabsTestBase.cs プロジェクト: eakarpov/Web
 public virtual void TestSetUp()
 {
     ExecuteOnConnection(c => ExecuteScript(GetSchemaInitializationScript(), c));
     GraphLabsContext = CreateDbContext();
 }
コード例 #24
0
 public UserService(IOptions <AuthSettings> appSettings, GraphLabsContext ctx, PasswordHashCalculator hashCalculator)
 {
     _ctx            = ctx;
     _hashCalculator = hashCalculator;
     _appSettings    = appSettings.Value;
 }
コード例 #25
0
 /// <summary> Репозиторий с вопросами </summary>
 public SurveyRepository(GraphLabsContext context)
     : base(context)
 {
 }
コード例 #26
0
ファイル: GroupRepository.cs プロジェクト: eakarpov/Web
 /// <summary> Репозиторий с группами </summary>
 public GroupRepository(GraphLabsContext context)
     : base(context)
 {
 }
コード例 #27
0
 public UsersController(GraphLabsContext context)
 {
     _db = context;
 }
コード例 #28
0
 public TaskVariantLogsController(GraphLabsContext context,
                                  IHttpContextAccessor contextAccessor)
 {
     _db = context;
     _contextAccessor = contextAccessor;
 }
コード例 #29
0
 /// <summary> Множество сущностей определённого типа - реализация EF </summary>
 public EntitySet(GraphLabsContext ctx)
 {
     _ctx = ctx;
 }
コード例 #30
0
 /// <summary> Репозиторий с сессиями </summary>
 public SessionRepository(GraphLabsContext context, ISystemDateService systemDateService)
     : base(context)
 {
     _systemDateService = systemDateService;
 }