コード例 #1
0
 private void Validate(DevelopmentTool developmentTool)
 {
     if (string.IsNullOrEmpty(developmentTool.Name))
     {
         ModelState.AddModelError("Name", "Enter Name for the development tool");
     }
     if (string.IsNullOrEmpty(developmentTool.ImagePath))
     {
         ModelState.AddModelError("ImagePath", "Enter ImagePath for the development tool");
     }
     if (string.IsNullOrEmpty(developmentTool.SiteUrl))
     {
         ModelState.AddModelError("SiteUrl", "Enter SiteUrl for the development tool");
     }
     if (developmentTool.Rate < 0 || developmentTool.Rate > 10)
     {
         ModelState.AddModelError("Rate", "Rate should be between 0 - 10");
     }
     if (developmentTool.Price < 0)
     {
         ModelState.AddModelError("Price", "Price should be greater than 0");
     }
     if (developmentTool.NumberOfRaters < 0)
     {
         ModelState.AddModelError("NumberOfRaters", "NumberOfRaters should be greater than 0");
     }
     if (developmentTool.NumberOfUsers < 0)
     {
         ModelState.AddModelError("NumberOfUsers", "NumberOfUsers should be greater than 0");
     }
     if (developmentTool.LastUpdate == new DateTime())
     {
         ModelState.AddModelError("LastUpdate", "Enter Last Update for the development tool");
     }
 }
コード例 #2
0
        public ActionResult CommentDetails(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            DevelopmentTool developmentTool = _db.DevelopmentTools.Find(id);

            if (developmentTool == null)
            {
                return(HttpNotFound());
            }
            var commentDetails = Json(developmentTool.Comments.OrderBy(x => x.Date).Select(x => new
            {
                canDelete = (User.IsInRole("Admin") || User.Identity.GetUserId() == x.User.Id),
                userId    = x.User.Id,
                x.Id,
                Date = x.Date.ToString(),
                x.Text,
                userName = x.User.UserName
            }), JsonRequestBehavior.AllowGet);

            return(commentDetails);
        }
コード例 #3
0
 public ActionResult Edit(DevelopmentTool developmentTool)
 {
     if (User == null || !User.IsInRole("Admin"))
     {
         return(Redirect("/Home/Index"));
     }
     Validate(developmentTool);
     if (ModelState.IsValid)
     {
         var original = _db.DevelopmentTools.Find(developmentTool.Id);
         original.Price       = developmentTool.Price;
         original.LastUpdate  = developmentTool.LastUpdate;
         original.Name        = developmentTool.Name;
         original.Description = developmentTool.Description;
         var newCompanyId = Guid.Parse(developmentTool.CompanyId);
         if (original.Company.CompanyId != newCompanyId)
         {
             original.Company.MostPopularDevelopmentTool = null;
         }
         original.Company           = _db.Companies.Find(newCompanyId);
         original.CompanyId         = developmentTool.CompanyId;
         original.ImagePath         = developmentTool.ImagePath;
         original.SiteUrl           = developmentTool.ImagePath;
         original.Rate              = developmentTool.Rate;
         original.NumberOfRaters    = developmentTool.NumberOfRaters;
         original.NumberOfUsers     = developmentTool.NumberOfUsers;
         original.SourceCodeLicense = developmentTool.SourceCodeLicense;
         _db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.Companies = GetCompaniesList();
     return(View(developmentTool));
 }
コード例 #4
0
        public async System.Threading.Tasks.Task <ActionResult> DevelopmentToolsEdit(ContestsDevelopmentToolsEditViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (await _db.DevelopmentTools.AnyAsync(d => d.ContestId == model.ContestId && d.Name == model.Name))
                {
                    ModelState.AddModelError("", "Компилятор в данном контесте с таким именем уже существует");
                }
                else
                {
                    var developmentTool = new DevelopmentTool
                    {
                        ContestId      = model.ContestId,
                        Id             = (Guid)model.DevelopmentToolId,
                        Name           = model.Name,
                        CompileCommand = model.CompileCommand,
                        CommandArgs    = model.CommandArgs
                    };

                    _db.Entry(developmentTool).State = EntityState.Modified;
                    await _db.SaveChangesAsync();

                    return(RedirectToAction("Edit", new { id = model.ContestId }));
                }
            }
            return(View(model));
        }
コード例 #5
0
        // GET: /DevelopmentTool/Details/5
        public ActionResult Details(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            DevelopmentTool developmentTool = _db.DevelopmentTools.Find(id);

            if (developmentTool == null)
            {
                return(HttpNotFound());
            }
            return(View(developmentTool));
        }
コード例 #6
0
        // GET: /DevelopmentTool/Delete/5
        public ActionResult Delete(Guid?id)
        {
            if (User == null || !User.IsInRole("Admin"))
            {
                return(Redirect("/Home/Index"));
            }

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DevelopmentTool developmentTool = _db.DevelopmentTools.Find(id);

            if (developmentTool == null)
            {
                return(HttpNotFound());
            }
            return(View(developmentTool));
        }
コード例 #7
0
 public ActionResult Create(DevelopmentTool developmentTool)
 {
     if (User == null || !User.IsInRole("Admin"))
     {
         return(Redirect("/Home/Index"));
     }
     #region Hack the validator
     developmentTool.Id = Guid.NewGuid();
     ModelState.Remove("Id");
     #endregion
     Validate(developmentTool);
     if (ModelState.IsValid)
     {
         developmentTool.Company = _db.Companies.Find(Guid.Parse(developmentTool.CompanyId));
         _db.DevelopmentTools.AddOrUpdate(developmentTool);
         _db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.Companies = GetCompaniesList();
     return(View(developmentTool));
 }
コード例 #8
0
        // GET: /DevelopmentTool/Edit/5
        public ActionResult Edit(Guid?id)
        {
            if (User == null || !User.IsInRole("Admin"))
            {
                return(Redirect("/Home/Index"));
            }

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DevelopmentTool developmentTool = _db.DevelopmentTools.Find(id);

            if (developmentTool == null)
            {
                return(HttpNotFound());
            }
            ViewBag.Companies = _db.Companies.Select(x => new SelectListItem()
            {
                Value = x.CompanyId.ToString(), Text = x.Name
            }).ToList();
            return(View(developmentTool));
        }
コード例 #9
0
        static void CreateInitialData()
        {
            //check if the database identified by a named connection string exists
            var existsByName = Database.Exists("Name=ProjectsContext");

            //check if the database identified by a connection string exists
            var existsByConnectionString = Database.Exists(@"Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=Succinctly;MultipleActiveResultSets=true");

            using (var ctx = new ProjectsContext())
            {
                var created = ctx.Database.CreateIfNotExists();

                if (ctx.Database.CompatibleWithModel(false) == true)
                {
                    return;
                }

                new DropCreateDatabaseAlways <ProjectsContext>().InitializeDatabase(ctx);

                using (var tx = new TransactionScope())
                {
                    //venues
                    var home = new Venue()
                    {
                        Name = "Home, Sweet Home", Location = DbGeography.FromText("POINT(40.2112 8.4292)")
                    };
                    var somePlace = new Venue()
                    {
                        Name = "Some Place Else", Location = DbGeography.FromText("POINT(41 8)")
                    };

                    /*ctx.Venues.Add(home);
                     * ctx.Venues.Add(somePlace);*/

                    //customers
                    var bigCustomer = new Customer()
                    {
                        Name = "Big Customer"
                    };
                    bigCustomer.Contact.Email = "*****@*****.**";
                    bigCustomer.Contact.Phone = "00 1 555 111 333";

                    var smallCustomer = new Customer()
                    {
                        Name = "Small Customer"
                    };
                    smallCustomer.Contact.Email = "*****@*****.**";
                    smallCustomer.Contact.Phone = "00 351 111 222 333";

                    ctx.Customers.Add(bigCustomer);
                    ctx.Customers.Add(smallCustomer);

                    var developer = new Resource()
                    {
                        Name = "Ricardo Peres"
                    };
                    developer.Contact.Email = "*****@*****.**";
                    developer.Contact.Phone = "?";

                    var projectManager = new Resource()
                    {
                        Name = "Succinct Project Manager"
                    };
                    projectManager.Contact.Email = "*****@*****.**";

                    var tester = new Resource()
                    {
                        Name = "Succinct Tester"
                    };
                    tester.Contact.Email = "*****@*****.**";

                    ctx.Resources.Add(developer);
                    ctx.Resources.Add(projectManager);
                    ctx.Resources.Add(tester);

                    //start technologies
                    var aspNet = new Technology()
                    {
                        Name = "ASP.NET"
                    };
                    var entityFramework = new Technology()
                    {
                        Name = "Entity Framework"
                    };
                    var selenium = new Technology()
                    {
                        Name = "Selenium"
                    };

                    aspNet.Resources.Add(developer);
                    entityFramework.Resources.Add(developer);
                    selenium.Resources.Add(tester);

                    developer.Technologies.Add(aspNet);
                    developer.Technologies.Add(entityFramework);
                    tester.Technologies.Add(selenium);

                    ctx.Technologies.Add(aspNet);
                    ctx.Technologies.Add(entityFramework);
                    ctx.Technologies.Add(selenium);
                    //end technologies

                    //start tools
                    var developmentTool = new DevelopmentTool()
                    {
                        Name = "Visual Studio 2012", Language = "C#"
                    };
                    var managementTool = new ManagementTool()
                    {
                        Name = "Project 2013", CompatibleWithProject = true
                    };
                    var testingTool = new TestingTool()
                    {
                        Name = "Selenium", Automated = true
                    };

                    ctx.Tools.Add(developmentTool);
                    ctx.Tools.Add(managementTool);
                    ctx.Tools.Add(testingTool);
                    //end tools

                    //start big project
                    var bigProject = new Project()
                    {
                        Name = "Big Project", Start = DateTime.Today, Customer = bigCustomer
                    };

                    var bigProjectDetail = new ProjectDetail()
                    {
                        Project = bigProject, Budget = 10000M, Critical = true
                    };

                    bigProject.Detail = bigProjectDetail;

                    ctx.SaveChanges();

                    var bigProjectDeveloperResource = new ProjectResource()
                    {
                        Project = bigProject, Resource = developer, Role = Role.Developer
                    };
                    var bigProjectProjectManagerResource = new ProjectResource()
                    {
                        Project = bigProject, Resource = projectManager, Role = Role.ProjectManager
                    };
                    var bigProjectTesterResource = new ProjectResource()
                    {
                        Project = bigProject, Resource = tester, Role = Role.Tester
                    };

                    bigProject.ProjectResources.Add(bigProjectDeveloperResource);
                    bigProject.ProjectResources.Add(bigProjectProjectManagerResource);
                    bigProject.ProjectResources.Add(bigProjectTesterResource);

                    developer.ProjectResources.Add(bigProjectDeveloperResource);
                    projectManager.ProjectResources.Add(bigProjectProjectManagerResource);
                    tester.ProjectResources.Add(bigProjectTesterResource);

                    bigCustomer.Projects.Add(bigProject);
                    //end big project

                    //small project
                    var smallProject = new Project()
                    {
                        Name = "Small Project", Start = DateTime.Today.AddDays(-7), End = DateTime.Today.AddDays(-1), Customer = smallCustomer
                    };

                    var smallProjectDetail = new ProjectDetail()
                    {
                        Project = smallProject, Budget = 5000M, Critical = false
                    };

                    var smallProjectDeveloperResource = new ProjectResource()
                    {
                        Project = smallProject, Resource = developer, Role = Role.Developer
                    };
                    var smallProjectProjectManagerResource = new ProjectResource()
                    {
                        Project = smallProject, Resource = projectManager, Role = Role.ProjectManager
                    };
                    var smallProjectTesterResource = new ProjectResource()
                    {
                        Project = smallProject, Resource = tester, Role = Role.Tester
                    };

                    smallProject.Detail = smallProjectDetail;

                    smallProject.ProjectResources.Add(smallProjectDeveloperResource);
                    smallProject.ProjectResources.Add(smallProjectProjectManagerResource);
                    smallProject.ProjectResources.Add(smallProjectTesterResource);

                    developer.ProjectResources.Add(smallProjectDeveloperResource);
                    projectManager.ProjectResources.Add(smallProjectProjectManagerResource);
                    tester.ProjectResources.Add(smallProjectTesterResource);

                    smallCustomer.Projects.Add(smallProject);
                    //end small project

                    ctx.SaveChanges();
                    tx.Complete();
                }
            }
        }
コード例 #10
0
        private Solution CheckPostedSolution(Contest contest, ApplicationUser user, Task task, DevelopmentTool devTool, string solutionsFolder, string localFolder, string sourcePath)
        {
            var solution = new Solution(new LocalFileSystem())
            {
                Configuration = new Common.Configuration
                {
                    FileSystem  = new LocalFileSystem(),
                    ContestType = contest.ContestsType.Name,
                    ContestName = contest.Name,
                    Site        = ConfigurationManager.AppSettings["SiteConfigFolder"]
                },
                DevTool = new DeveloperTool
                {
                    Name           = devTool.Name,
                    CompileCommand = devTool.CompileCommand,
                    CommandArgs    = devTool.CommandArgs,
                    IsExeFile      = false
                },
                Task = new Common.Task
                {
                    Name           = task.Name,
                    ExecutableName = task.ExecutableName,
                    CheckerName    = task.CheckerName,
                    TestsFolder    = task.TestsFolder,
                    TimeLimit      = task.TimeLimit,
                    Weight         = task.Weight,
                    MaxSourceSize  = task.MaxSourceSize,
                    MaxMemorySize  = task.MaxMemorySize
                },
                Path            = sourcePath,
                LocalSourcePath = sourcePath
            };

            solution.Check(LocalFolder, solutionsFolder);

            return(solution);
        }