示例#1
0
        /// <summary>
        /// Displays the submission status.
        /// </summary>
        /// <param name="id">Assignment Identifier</param>
        /// <returns>The submission page view.</returns>
        public ActionResult Submit(int id)
        {
            User user;

            try
            {
                user = getCurrentUser();
            }
            catch (Exception e)
            {
                return(RedirectToAction("Login", "Account"));
            }

            if (user.UserRoleID != 2)
            {
                return(RedirectToAction("AccessDenied", "Home"));
            }

            MultiViewModel            MVM = new MultiViewModel();
            Course_Assignments        ca  = GetCourseAssignments().Where(c => c.Course_AssignmentsID == id).First();
            StudentCourseRegistration str = GetSCR().Where(s => s.CourseInstanceID == ca.CourseInstanceID && s.STUDENTID == user.UserId).First();

            MVM.assignment  = GetAssignmentById(ca.AssignmentID);
            MVM.Questions   = GetQuestionsByAssignmentId(MVM.assignment.AssignmentID);
            MVM.Submissions = GetSubmissions().Where(s => s.StudentCourseRegistrationID == str.StudentCourseRegistrationID);

            return(View(MVM));
        }
示例#2
0
        /// <summary>
        /// Setting the viewmodel
        /// </summary>
        /// <param name="m"></param>
        public void SetVM(MazeViewModel m)
        {
            myVM             = m as MultiViewModel;
            this.DataContext = myVM;
            MultiMazeModel tempModel = myVM.MyModel as MultiMazeModel;

            //Delegate for moving opponent's player on his board
            tempModel.OpponentMoved += delegate(Object sender, Key e)
            {
                int close = 10;
                this.Dispatcher.Invoke(() =>
                {
                    close = OpponentBoard.MovePlayer(e);

                    //Opponent won
                    if (close == -1 || close == 2)
                    {
                        LoserWindow lw = new LoserWindow();
                        lw.ShowDialog();
                        BackToMain();
                    }
                    //Opponent closed game
                    if (close == -2)
                    {
                        OtherPlayerQuit();
                    }
                });
            };
            myVM.VM_Maze = myVM.MyModel.MazeString();
        }
示例#3
0
        public void PresentShouldInvokeCallbackOnRemove()
        {
            var vm = GetViewModel <NavigableViewModelMock>();
            IOperationCallback operationCallback = null;

            OperationCallbackManager.Register = (type, o, arg3, arg4) =>
            {
                type.ShouldEqual(OperationType.TabNavigation);
                operationCallback = arg3;
            };
            OperationCallbackManager.SetResult = (o, result) =>
            {
                result.Operation.ShouldEqual(OperationType.TabNavigation);
                o.ShouldEqual(vm);
                operationCallback.Invoke(result);
            };

            vm.OperationResult = true;
            MultiViewModel             viewModel = GetMultiViewModel();
            IDynamicViewModelPresenter presenter = new DynamicMultiViewModelPresenter(viewModel,
                                                                                      OperationCallbackManager, (model, context, arg3) => true);
            IAsyncOperation <bool?> task = presenter.TryShowAsync(vm, DataContext.Empty, null);

            task.ShouldNotBeNull();
            task.IsCompleted.ShouldBeFalse();
            viewModel.RemoveViewModelAsync(vm).Result.ShouldBeTrue();
            task.IsCompleted.ShouldBeTrue();
            task.Result.Result.ShouldEqual(true);
            operationCallback.ShouldNotBeNull();
        }
示例#4
0
        public void PresentShouldInvokeCallbackOnClear()
        {
            var vm = GetViewModel <NavigableViewModelMock>();
            IOperationCallback operationCallback = null;

            ApplicationSettings.Platform      = new PlatformInfo(PlatformType.WPF, new Version(0, 0));
            OperationCallbackManager.Register = (type, o, arg3, arg4) =>
            {
                type.ShouldEqual(OperationType.TabNavigation);
                operationCallback = arg3;
            };
            OperationCallbackManager.SetResult = (o, result) =>
            {
                result.Operation.ShouldEqual(OperationType.TabNavigation);
                o.ShouldEqual(vm);
                operationCallback.Invoke(result);
            };

            vm.OperationResult = true;
            MultiViewModel             viewModel = GetMultiViewModel();
            IDynamicViewModelPresenter presenter = new DynamicMultiViewModelPresenter(viewModel,
                                                                                      OperationCallbackManager);
            IAsyncOperation <bool?> task = presenter.TryShowAsync(vm, DataContext.Empty, null);

            task.ShouldNotBeNull();
            task.IsCompleted.ShouldBeFalse();
            viewModel.Clear();
            task.IsCompleted.ShouldBeTrue();
            task.Result.Result.ShouldEqual(true);
            operationCallback.ShouldNotBeNull();
        }
示例#5
0
        /// <summary>
        /// Student Index.
        /// </summary>
        /// <returns>Student home page view.</returns>
        public ActionResult Index()
        {
            User user;

            try
            {
                user = getCurrentUser();
            }
            catch (Exception e)
            {
                return(RedirectToAction("Login", "Account"));
            }

            if (user.UserRoleID != 2)
            {
                return(RedirectToAction("AccessDenied", "Home"));
            }

            var            entity = new graderEntities();
            MultiViewModel MVM    = new MultiViewModel();

            MVM.SCRs = entity.StudentCourseRegistrations.Where(p => p.STUDENTID == user.UserId);
            MVM.CourseAssignments = GetCourseAssignments();
            MVM.CourseInstances   = GetCourseInstances();
            MVM.Assignments       = GetAssignments();
            MVM.Submissions       = GetSubmissions();
            MVM.Courses           = GetCourses();

            return(View(MVM));
        }
示例#6
0
        public virtual INavigationOperation TryShowAsync(IViewModel viewModel, IDataContext context,
                                                         IViewModelPresenter parentPresenter)
        {
            if (!MultiViewModel.ViewModelType.IsInstanceOfType(viewModel))
            {
                return(null);
            }
            bool data;

            if (context.TryGetData(NavigationConstants.SuppressTabNavigation, out data) && data)
            {
                return(null);
            }
            if (!CanShowViewModel(viewModel, context, parentPresenter))
            {
                return(null);
            }
            if (MultiViewModel.ItemsSource.Any(vm => vm == viewModel))
            {
                MultiViewModel.SelectedItem = viewModel;
            }
            else
            {
                MultiViewModel.AddViewModel(viewModel, true);
            }
            var operation = new NavigationOperation();

            CallbackManager.Register(OperationType.TabNavigation, viewModel, operation.ToOperationCallback(), context);
            return(operation);
        }
 public ActionResult Index(MultiViewModel MVMviewModel)
 {
     if (!ModelState.IsValid)
     {
         return(View(MVMviewModel));
     }
     else
     {
         return(View("Results", MVMviewModel));
     }
 }
        public MultiViewPlugin()
        {
            InitializeComponent();
            _viewModel  = new MultiViewModel();
            _views      = new List <IAMLEditorView>();
            DisplayName = "Multiple Views";

            IsReactive = true;
            PaneImage  = new BitmapImage(
                new Uri("pack://application:,,,/Aml.Editor.Plugin.MultiView;component/Plugin.png"));
        }
 protected virtual IAsyncOperation TryShowInternalAsync(IViewModel viewModel, IDataContext context, IViewModelPresenter parentPresenter)
 {
     if (MultiViewModel.ItemsSource.Any(vm => vm == viewModel))
     {
         MultiViewModel.SelectedItem = viewModel;
     }
     else
     {
         MultiViewModel.AddViewModel(viewModel, true);
     }
     return(viewModel.RegisterNavigationOperation(OperationType.TabNavigation, context));
 }
示例#10
0
        public void PresenterShouldAddVmToMultiViewModel()
        {
            var                        vm        = GetViewModel <NavigableViewModelMock>();
            MultiViewModel             viewModel = GetMultiViewModel();
            IDynamicViewModelPresenter presenter = new DynamicMultiViewModelPresenter(viewModel,
                                                                                      OperationCallbackManager, (model, context, arg3) => true);
            IAsyncOperation <bool?> task = presenter.TryShowAsync(vm, DataContext.Empty, null);

            task.ShouldNotBeNull();
            task.IsCompleted.ShouldBeFalse();
            viewModel.ItemsSource.Contains(vm).ShouldBeTrue();
        }
        protected virtual IAsyncOperation TryShowInternalAsync(IViewModel viewModel, IDataContext context, IViewModelPresenter parentPresenter)
        {
            if (MultiViewModel.ItemsSource.Any(vm => vm == viewModel))
            {
                MultiViewModel.SelectedItem = viewModel;
            }
            else
            {
                MultiViewModel.AddViewModel(viewModel, true);
            }
            var operation = new AsyncOperation <object>();

            CallbackManager.Register(OperationType.TabNavigation, viewModel, operation.ToOperationCallback(), context);
            return(operation);
        }
示例#12
0
        // GET: Users/Edit/5
        public ActionResult Edit(MultiViewModel model, string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            //var address = db.Addresses.Include(a => a.UserId).Where(a => a.UserId == id);
            var User = db.Users.Find(id);

            ViewBag.UserRole = new SelectList(db.Roles.ToList(), "Name", "Name");
            if (User == null)
            {
                return(HttpNotFound());
            }
            return(View(User));
        }
        public void PreseterShouldUseDelegateToShowViewModel()
        {
            bool                       canShow   = false;
            var                        vm        = GetViewModel <NavigableViewModelMock>();
            MultiViewModel             viewModel = GetMultiViewModel();
            IDynamicViewModelPresenter presenter = new DynamicMultiViewModelPresenter(viewModel,
                                                                                      OperationCallbackManager, (model, context, arg3) => canShow);
            var task = presenter.TryShowAsync(vm, DataContext.Empty, null);

            task.ShouldBeNull();
            viewModel.ItemsSource.Contains(vm).ShouldBeFalse();

            canShow = true;
            task    = presenter.TryShowAsync(vm, DataContext.Empty, null);
            task.ShouldNotBeNull();
            task.IsCompleted.ShouldBeFalse();
            viewModel.ItemsSource.Contains(vm).ShouldBeTrue();
        }
示例#14
0
        /// <summary>
        ///     Tries to show the specified <see cref="IViewModel" />.
        /// </summary>
        /// <param name="viewModel">The specified <see cref="IViewModel" /> to show.</param>
        /// <param name="context">The specified context.</param>
        /// <param name="parentPresenter">The parent presenter, if any.</param>
        public virtual IAsyncOperation <bool?> TryShowAsync(IViewModel viewModel, IDataContext context,
                                                            IViewModelPresenter parentPresenter)
        {
            Should.NotBeNull(viewModel, "viewModel");
            bool data;

            if (context.TryGetData(NavigationConstants.SuppressTabNavigation, out data) && data)
            {
                return(null);
            }
            if (!CanShowViewModel(viewModel, context, parentPresenter))
            {
                return(null);
            }
            MultiViewModel.AddViewModel(viewModel);
            var operation = new AsyncOperation <bool?>();

            CallbackManager.Register(OperationType.TabNavigation, viewModel, operation.ToOperationCallback(), context);
            return(operation);
        }
示例#15
0
        /// <summary>
        /// constructor
        /// </summary>
        public MultiStartWindow()
        {
            InitializeComponent();
            MultiMazeModel m       = new MultiMazeModel();
            int            success = m.Connect();

            if (success < 0)
            {
                ConnectionFailedWindow c = new ConnectionFailedWindow();
                c.Show();
            }
            if (success >= 0)
            {
                m.GetListOfGames();
                myVM                     = new MultiViewModel(m);
                DataContext              = myVM;
                GameInfo.btnStart.Click += BtnStart_Click;
                this.Show();
            }
        }
示例#16
0
        public ActionResult Submit(HttpPostedFileBase file, int id)
        {
            User user;

            try
            {
                user = getCurrentUser();
            }
            catch (Exception e)
            {
                return(RedirectToAction("Login", "Account"));
            }

            if (user.UserRoleID != 2)
            {
                return(RedirectToAction("AccessDenied", "Home"));
            }

            MultiViewModel MVM = new MultiViewModel();

            using (var model = new graderEntities())
            {
                Course_Assignments cas              = (from Course_Assignments in model.Course_Assignments where Course_Assignments.Course_AssignmentsID == id select Course_Assignments).First();
                int                      aid        = cas.AssignmentID;
                Assignment               assignment = (from Assignment in model.Assignments where Assignment.AssignmentID == aid select Assignment).First();
                IEnumerable <Question>   questions  = (from Question in model.Questions where Question.AssignmentID == aid select Question).ToList();
                IEnumerable <SUBMISSION> subs       = (from SUBMISSION in model.SUBMISSIONs select SUBMISSION).ToList();

                int        qid   = int.Parse(Request["questionID"]);
                int        subid = int.Parse(Request["subID"]);
                SUBMISSION sub   = (from SUBMISSION in model.SUBMISSIONs where SUBMISSION.SubmissionID == subid select SUBMISSION).First();
                if (file == null)
                {
                    return(RedirectToAction("Submit"));
                }

                if (file.ContentLength >= 0)
                {
                    //-->should add a message "Already solved"
                    if (sub.Result != null)
                    {
                        if (sub.Result.Equals("Solved!"))
                        {
                            return(RedirectToAction("Index"));
                        }
                    }

                    Question question = (from Question in model.Questions where Question.QuestionID == qid select Question).First();

                    //-->should add a message "No more tries left"
                    if (question.MaximumTries == sub.TRIES)
                    {
                        return(RedirectToAction("Index"));
                    }
                    ;

                    //-->should add a message "Deadline passed"
                    if (assignment.DEADLINE < DateTime.Now)
                    {
                        return(RedirectToAction("Index"));
                    }

                    sub.SubmittedDate = DateTime.Now;

                    string extension = Path.GetExtension(file.FileName);
                    // the reading happens through a text file, i think we can also read the static java file
                    //if needed
                    if (extension == ".zip")
                    {
                        var    fileName = Path.GetFileName(file.FileName);
                        string path     = Server.MapPath(@"~\Files") + "\\" + System.Web.HttpContext.Current.User.Identity.Name.Substring(0, System.Web.HttpContext.Current.User.Identity.Name.IndexOf("@")) + "\\" + assignment.AssignmentID + "\\" + question.QuestionID;
                        GC.Collect();
                        GC.WaitForPendingFinalizers();
                        if (Directory.Exists(path))
                        {
                            DirectoryInfo di = new DirectoryInfo(path);
                            foreach (FileInfo fil in di.GetFiles())
                            {
                                fil.Delete();
                            }
                        }

                        Directory.CreateDirectory(Server.MapPath(@"~\Files") + "\\" + System.Web.HttpContext.Current.User.Identity.Name.Substring(0, System.Web.HttpContext.Current.User.Identity.Name.IndexOf("@")) + "\\" + assignment.AssignmentID + "\\" + question.QuestionID);
                        path = Path.Combine(path, fileName);
                        file.SaveAs(path);

                        ViewBag.HtmlStr = Request["submit"].Substring(17);

                        int    line   = Program.run(subid, path);
                        string output = "";
                        //right format
                        if (line > -10003)
                        {
                            sub.TRIES++;
                            if (line == 0)
                            {
                                output    = "Solved!";
                                sub.GRADE = question.MaximumGrade - question.MaximumGrade * (sub.TRIES - 1) / question.MaximumTries;
                            }
                            else if (line == -10001)
                            {
                                output = "No output provided.";
                            }
                            else if (line == -10002)
                            {
                                output = "Compilation Error.";
                            }
                            else if (line > 0)
                            {
                                output = "Wrong value(s) starting line " + line;
                            }
                            else
                            {
                                output = "Excess of lines in output starting line " + (-line);
                            }
                        }
                        else if (line == -10006)
                        {
                            output = "No Files Found.";
                        }
                        else if (line == -10005)
                        {
                            output = "Directory Not Found. Please Resubmit.";
                        }
                        else if (line == -10004)
                        {
                            output = "No Java File Found.";
                        }
                        else if (line == -10003)
                        {
                            output = "Excess of Files. Non Java Files Found.";
                        }

                        sub.Result = output;
                        sub.FILE   = Path.GetDirectoryName(path);
                        model.SaveChanges();

                        MVM.assignment  = assignment;
                        MVM.Questions   = questions;
                        MVM.Submissions = subs;
                        Thread.Sleep(3000);
                        return(RedirectToAction("Submit", "Students", new { id = cas.Course_AssignmentsID }));
                    }
                    else
                    {
                        sub.Result = "File submitted is not of correct format.";
                        model.SaveChanges();
                        return(RedirectToAction("Submit", "Students", new { id = cas.Course_AssignmentsID }));
                    }
                }
                else
                {
                    return(RedirectToAction("Submit", "Students", new { id = cas.Course_AssignmentsID }));
                }
            }
        }
        protected override MultiViewModel <IViewModel> GetMultiViewModelInternal()
        {
            var vm = new MultiViewModel <IViewModel>();

            return(vm);
        }
 public ActionResult Results(MultiViewModel MVMviewModel)
 {
     return(View(MVMviewModel));
 }