예제 #1
0
        /// <summary>
        /// Get project file by project id, returns a viewmodel of the type 'ProjectFileViewModel'.
        /// LINQ query for each of 'ProjectFileViewModel' properties used.
        /// </summary>
        /// <param name="projectFileId">Project File ID</param>
        /// <returns>'ProjectFileViewModel'</returns>
        public ProjectFileViewModel getProjectFileByProjectFileId(int projectFileId)
        {
            if (projectFileId > 0)
            {
                ProjectFileViewModel model = new ProjectFileViewModel();

                model._id = (from f in _db._projectFiles
                             where f.ID == projectFileId
                             select f.ID).SingleOrDefault();

                model._projectFileData = (from f in _db._projectFiles
                                          where f.ID == projectFileId
                                          select f._projectFileData).SingleOrDefault().ToString();

                model._projectFileName = (from f in _db._projectFiles
                                          where f.ID == projectFileId
                                          select f._projectFileName).SingleOrDefault().ToString();

                model._projectFileType = (from f in _db._projectFiles
                                          where f.ID == projectFileId
                                          select f._projectFileType).SingleOrDefault().ToString();

                model._projectID = (from f in _db._projectFiles
                                    where f.ID == projectFileId
                                    select f._projectID).SingleOrDefault();

                model._aceExtension = (from f in _db._projectFiles
                                       where f.ID == projectFileId
                                       select f._aceExtension).SingleOrDefault().ToString();

                return(model);
            }
            return(null);
        }
예제 #2
0
        private bool UpdateLineAndColumnOfCursorPositionInViewModel(bool bypassContentSynchronizationWithViewModel)
        {
            ProjectViewModel proj = DataContext as ProjectViewModel;

            if (proj == null)
            {
                return(false);
            }

            ProjectFileViewModel projFile = proj.SelectedProjectItem as ProjectFileViewModel;

            if (projFile == null)
            {
                return(false);
            }

            // Update the caret index.  I'd like to just data-bind the thing, but it's not a dependency property,
            // and this seems to be the simplest way to do it.
            projFile.CaretIndex = SelectedFileContent.CaretIndex;

            if (bypassContentSynchronizationWithViewModel)
            {
                // Update file content
                projFile.Content = SelectedFileContent.Text;
            }

            ResolveLineAndColumnPositionInFileFromCaretIndex(projFile);

            return(true);
        }
예제 #3
0
        public ActionResult DeleteProjectFileConfirmed(int id)
        {
            ProjectFileViewModel model = new ProjectFileViewModel();

            model = _projectFileService.getProjectFileByProjectFileId(id);
            _projectFileService.deleteProjectFile(id);
            return(RedirectToAction("DisplayProject" + "/" + model._projectID.ToString()));
        }
예제 #4
0
        internal virtual void Run(string outputFile, ProjectFileViewModel model, string viewPath)
        {
            var output = RenderViewToString(model, viewPath);

            if (!String.IsNullOrWhiteSpace(output))
            {
                Directory.CreateDirectory(Directory.GetParent(outputFile).FullName);
                File.WriteAllText(outputFile, output);
            }
        }
예제 #5
0
 /// <summary>
 /// Update file by file ID in the Db.
 /// </summary>
 /// <param name="file">'ProjectFileViewModel'</param>
 public void updateProjectFile(ProjectFileViewModel file)
 {
     if (file._id != 0)
     {
         (from f in _db._projectFiles
          where f.ID == file._id
          select f).SingleOrDefault()._projectFileData = file._projectFileData;
         _db.SaveChanges();
     }
 }
예제 #6
0
        public async Task <IActionResult> Details(string id)
        {
            var project = await this.adminService.GetProjectById(id);

            var projectFiles = await this.projectService.GetCurrentProjectFiles(id);

            var projectFilesResult = new List <ProjectFileViewModel>();

            foreach (var currentProjectFile in projectFiles)
            {
                var projectFile = new ProjectFileViewModel
                {
                    Id         = currentProjectFile.Id,
                    Name       = currentProjectFile.Name,
                    IsApproved = currentProjectFile.IsApproved,
                    IsPublic   = currentProjectFile.IsPublic,
                    ProjectId  = currentProjectFile.ProjectId,
                    Url        = currentProjectFile.Url,
                };

                projectFilesResult.Add(projectFile);
            }

            var projectReviews = await this.projectService.GetCurrentProjectReviews(id);

            var projectDesignBoards = await this.projectService.GetCurrentProjectDesignBoards(id);

            var resultDesignBoards = new List <DesignBoardViewModel>();

            foreach (var designBoard in projectDesignBoards)
            {
                var board = new DesignBoardViewModel
                {
                    Id               = designBoard.Id,
                    Name             = designBoard.Name,
                    DesignReferences = await this.designBoardService.GetDesignBoardReferences(designBoard.Id),
                    ProjectStatus    = project.Status.ToString(),
                };

                resultDesignBoards.Add(board);
            }

            var result = new ProjectDetailsViewModel
            {
                ProjectFiles   = projectFilesResult,
                ProjectReviews = projectReviews,
                DesignBoards   = resultDesignBoards,
                Name           = project.Name,
                Id             = id,
                Status         = project.Status.ToString(),
            };

            return(this.View(result));
        }
예제 #7
0
 public ActionResult EditProjectFile(ProjectFileViewModel model)
 {
     if (model._projectFileData == null)
     {
         model._projectFileData = "";
     }
     if (model._id != 0)
     {
         _projectFileService.updateProjectFile(model);
         return(View(model));
     }
     return(HttpNotFound());
 }
예제 #8
0
        public ActionResult EditProjectFile(int?id)
        {
            if (id != null)
            {
                if (_projectFileService.doesProjectFileExist(id.Value))
                {
                    int projectId = _projectFileService.getProjectFileByProjectFileId(id.Value)._projectID;

                    if (_userService.isProjectOwnerOrMember(User.Identity.Name, projectId))
                    {
                        ProjectFileViewModel model = new ProjectFileViewModel();
                        model = _projectFileService.getProjectFileByProjectFileId(id.Value);
                        return(View(model));
                    }
                }
            }
            return(RedirectToAction("Index", "Overview"));
        }
예제 #9
0
        public ActionResult DeleteProjectFile(int?id)
        {
            if (id != null)
            {
                if (_projectFileService.doesProjectFileExist(id.Value))
                {
                    int projectId = _projectFileService.getProjectFileByProjectFileId(id.Value)._projectID;

                    if (_userService.isProjectOwner(User.Identity.Name, projectId))
                    {
                        ProjectFileViewModel model = new ProjectFileViewModel();
                        model = _projectFileService.getProjectFileByProjectFileId(id.Value);
                        return(View(model));
                    }
                }
            }
            return(HttpNotFound());
        }
예제 #10
0
        public async Task <ProjectFileViewModel> AddProjectFile(ProjectFileCreateModel projectFile)
        {
            var project = this.context
                          .Projects
                          .Where(p => p.Id == projectFile.ProjectId)
                          .SingleOrDefault();

            var file = projectFile.File;

            if (this.context.ProjectFiles.Any(p => p.Name == projectFile.Name))
            {
                return(null);
            }

            string projectFileUrl = await this.cloudinaryService.UploadProjectFileAsync(projectFile.File, Guid.NewGuid().ToString());

            var newFile = new ProjectFile
            {
                IsApproved = projectFile.IsApproved,
                AddedOn    = projectFile.AddedOn,
                ProjectId  = project.Id,
                IsPublic   = projectFile.IsPublic,
                Name       = projectFile.Name,
                Url        = projectFileUrl,
            };

            project.ProjectFiles.Add(newFile);
            await this.context.SaveChangesAsync();

            var result = new ProjectFileViewModel
            {
                IsApproved = newFile.IsApproved,
                IsPublic   = newFile.IsPublic,
                Url        = newFile.Url,
            };

            return(result);
        }
예제 #11
0
        /// <summary>
        /// try to convert the content index to a line and column
        /// </summary>
        /// <param name="fileVm"></param>
        /// <param name="caretIndex"></param>
        private void ResolveLineAndColumnPositionInFileFromCaretIndex(ProjectFileViewModel fileVm)
        {
            int  caretIndex   = fileVm.CaretIndex;
            var  contentParts = fileVm.Content.Split(new[] { "\r\n" }, StringSplitOptions.None);
            int  newStart     = 0;
            bool done         = false;

            for (int line = 0; line < contentParts.Length && !done; line++)
            {
                string lineContent = contentParts[line];
                int    start       = newStart;
                int    end         = newStart + lineContent.Length;
                if (caretIndex >= start && caretIndex <= end)
                {
                    fileVm.CaretLine   = line + 1;
                    fileVm.CaretColumn = caretIndex - start + 1;
                    done = true;
                }
                newStart = end + 2;
            }

            fileVm.CaretLocation = string.Format("line {0}, col {1}", fileVm.CaretLine, fileVm.CaretColumn);
        }
예제 #12
0
        private void ParseFile()
        {
            if (Dispatcher != null && !Dispatcher.CheckAccess())
            {
                Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)ParseFile);
                return;
            }

            ProjectFileViewModel fileToParse = _fileToParse;

            #region Do Parsing and other stuff...

            //Logger.AppendLine("this is where we will parse file {0}...", fileToParse.Name);
            //ParseFile(fileToParse);

            #endregion

            // if the preconditions for this method invocation still hold true, then clear the file to parse ref to indicate that we've parse the file.
            if (fileToParse == _fileToParse && DateTime.Now > _timeAtWhichToParse)
            {
                _fileToParse = null;
            }
        }
예제 #13
0
        public virtual string RenderViewToString(ProjectFileViewModel viewModel, string viewPath)
        {
            var actionContext = GetActionContext();

            var view = FindView(viewPath);

            using (var output = new StringWriter())
            {
                var viewContext = new ViewContext(
                    actionContext,
                    view,
                    new ViewDataDictionary <ProjectFileViewModel>(
                        new EmptyModelMetadataProvider(),
                        new ModelStateDictionary())
                {
                    Model = viewModel
                },
                    new TempDataDictionary(
                        actionContext.HttpContext,
                        _tempDataProvider),
                    output,
                    new HtmlHelperOptions());

                view.RenderAsync(viewContext).GetAwaiter().GetResult();
                return(output.ToString());
            }

            ActionContext GetActionContext()
            {
                var httpContext = new DefaultHttpContext
                {
                    RequestServices = _serviceProvider
                };

                return(new ActionContext(httpContext, new RouteData(), new ActionDescriptor()));
            }
        }
        public void TestUpdateProjectFile()
        {
            // Arrange:
            CreateProjectFileViewModel model = new CreateProjectFileViewModel();

            model._projectID          = 2;
            model._projectFileName    = "AddTestFile_01";
            model._projectFileType    = ".css";
            model._projectFileData    = "hodor hodOr HODOr...hODOr";
            model._isUserProjectOwner = true;

            _service.addProjectFile(model);

            ProjectFileViewModel modelUpdate = new ProjectFileViewModel();

            modelUpdate._id = 0;
            modelUpdate._projectFileData = "bacon bacOn BACOn...bACOn";

            // Act:
            _service.updateProjectFile(modelUpdate);

            // Assert:
            Assert.AreEqual("bacon bacOn BACOn...bACOn", _service.getProjectFileByProjectFileId(0)._projectFileData);
        }
예제 #15
0
 public virtual void Render(ProjectFileViewModel model, string outputFile)
 {
     Run(outputFile, model, "Views\\ProjectFile.cshtml");
 }
예제 #16
0
 public ActionResult createNewProjectFile(ProjectFileViewModel model)
 {
     return(null);
 }
예제 #17
0
        public void Initialize()
        {
            var mockDb = new MockDataContext();

            #region Initialize projects.
            var p1 = new Project
            {
                ID                 = 1,
                _projectName       = "Project_1",
                _projectFileTypeId = 1,
            };
            mockDb._projects.Add(p1);

            var p2 = new Project
            {
                ID                 = 2,
                _projectName       = "Project_2",
                _projectFileTypeId = 2
            };
            mockDb._projects.Add(p2);

            var p3 = new Project
            {
                ID                 = 3,
                _projectName       = "Project_3",
                _projectFileTypeId = 3
            };
            mockDb._projects.Add(p3);

            var p4 = new Project
            {
                ID                 = 4,
                _projectName       = "Project_4",
                _projectFileTypeId = 4
            };
            mockDb._projects.Add(p4);

            var p5 = new ProjectFile
            {
                ID               = 1,
                _projectID       = 1,
                _projectFileName = "lab1",
                _projectFileType = "html",
                _aceExtension    = "html",
                _projectFileData = "hello"
            };
            mockDb._projectFiles.Add(p5);

            var p6 = new ProjectOwner
            {
                ID         = 1,
                _projectID = 1,
                _userName  = "******"
            };
            mockDb._projectOwners.Add(p6);

            var p7 = new ProjectFileViewModel
            {
                _id = 1,
                _projectFileData = "dada",
                _projectID       = 1,
                _projectFileName = "lab98"
            };
            mockDb._projectFileViewModel.Add(p7);

            var p8 = new ProjectViewModel
            {
                _id             = 1,
                _isProjectOwner = true,
                _projectName    = "String"
            };
            mockDb._projectViewModel.Add(p8);

            var p9 = new ApplicationUserViewModel
            {
                _applicationUserName = "******"
                                       //_applicationUserProjects ""
            };
            mockDb.UserViewModel.Add(p9);
            #endregion

            _service = new ProjectService(mockDb);
        }
예제 #18
0
 public ActionResult updateProjectFile(ProjectFileViewModel model)
 {
     return(null);
 }