Esempio n. 1
0
        public ActionResult Create(int id)
        {
            var problem = this.Data.Problems.All().FirstOrDefault(pr => pr.Id == id);

            if (problem == null)
            {
                this.TempData.AddDangerMessage(Resource.Problem_not_found);
                return(this.RedirectToAction(GlobalConstants.Index, "Problems"));
            }

            int orderBy;
            var resources = problem.Resources.Where(res => !res.IsDeleted);

            if (!resources.Any())
            {
                orderBy = 0;
            }
            else
            {
                orderBy = resources.Max(res => res.OrderBy) + 1;
            }

            var resource = new ProblemResourceViewModel
            {
                ProblemId   = id,
                ProblemName = problem.Name,
                OrderBy     = orderBy,
                AllTypes    = EnumConverter.GetSelectListItems <ProblemResourceType>()
            };

            return(this.View(resource));
        }
Esempio n. 2
0
        public ActionResult Create(int id)
        {
            var problem = this.Data.Problems.All().FirstOrDefault(pr => pr.Id == id);

            if (problem == null)
            {
                TempData["DangerMessage"] = "Задачата не е намерене";
                return(RedirectToAction("Index", "Problems"));
            }

            int orderBy;
            var resources = problem.Resources.Where(res => !res.IsDeleted);

            if (resources == null || resources.Count() == 0)
            {
                orderBy = 0;
            }
            else
            {
                orderBy = resources.Max(res => res.OrderBy) + 1;
            }

            var resource = new ProblemResourceViewModel
            {
                ProblemId   = id,
                ProblemName = problem.Name,
                OrderBy     = orderBy,
                AllTypes    = this.GetAllResourceTypes()
            };

            return(View(resource));
        }
Esempio n. 3
0
        public ActionResult Create(int id, ProblemResourceViewModel resource)
        {
            if (resource == null)
            {
                this.TempData.AddDangerMessage(Resource.Invalid_resource);
                return(this.RedirectToAction("Resource", "Problems", new { id }));
            }

            if (!this.CheckIfUserHasProblemPermissions(id))
            {
                return(this.RedirectToContestsAdminPanelWithNoPrivilegesMessage());
            }

            if (resource.Type == ProblemResourceType.Link && string.IsNullOrEmpty(resource.RawLink))
            {
                this.ModelState.AddModelError("Link", Resource.Link_not_empty);
            }
            else if (resource.Type != ProblemResourceType.Link && (resource.File == null || resource.File.ContentLength == 0))
            {
                this.ModelState.AddModelError("File", Resource.File_required);
            }

            if (this.ModelState.IsValid)
            {
                var problem = this.Data.Problems
                              .All()
                              .FirstOrDefault(x => x.Id == id);

                if (problem == null)
                {
                    this.TempData.AddDangerMessage(Resource.Problem_not_found);
                    return(this.RedirectToAction(GlobalConstants.Index, "Problems"));
                }

                var newResource = new ProblemResource
                {
                    Name    = resource.Name,
                    Type    = resource.Type,
                    OrderBy = resource.OrderBy,
                };

                if (resource.Type == ProblemResourceType.Link)
                {
                    newResource.Link = resource.RawLink;
                }
                else
                {
                    newResource.File          = resource.File.InputStream.ToByteArray();
                    newResource.FileExtension = resource.FileExtension;
                }

                problem.Resources.Add(newResource);
                this.Data.SaveChanges();

                return(this.RedirectToAction("Resource", "Problems", new { id }));
            }

            resource.AllTypes = EnumConverter.GetSelectListItems <ProblemResourceType>();
            return(this.View(resource));
        }
Esempio n. 4
0
        public ActionResult Create(int id, ProblemResourceViewModel resource)
        {
            if (resource == null)
            {
                TempData["DangerMessage"] = "Ресурсът е невалиден";
                return(RedirectToAction("Resource", "Problems", new { id = id }));
            }

            if (resource.Type == ProblemResourceType.Video && string.IsNullOrEmpty(resource.Link))
            {
                ModelState.AddModelError("Link", "Линкът не може да бъде празен");
            }
            else if (resource.Type != ProblemResourceType.Video && (resource.File == null || resource.File.ContentLength == 0))
            {
                ModelState.AddModelError("File", "Файлът е задължителен");
            }

            if (ModelState.IsValid)
            {
                var problem = this.Data.Problems
                              .All()
                              .FirstOrDefault(x => x.Id == id);

                if (problem == null)
                {
                    TempData["DangerMessage"] = "Задачата не е намерена";
                    return(RedirectToAction("Index", "Problems"));
                }

                var newResource = new ProblemResource
                {
                    Name    = resource.Name,
                    Type    = resource.Type,
                    OrderBy = resource.OrderBy,
                };

                if (resource.Type == ProblemResourceType.Video)
                {
                    newResource.Link = resource.Link;
                }
                else
                {
                    newResource.File          = resource.File.InputStream.ToByteArray();
                    newResource.FileExtension = resource.FileExtension;
                }

                problem.Resources.Add(newResource);
                this.Data.SaveChanges();

                return(RedirectToAction("Resource", "Problems", new { id = id }));
            }

            resource.AllTypes = this.GetAllResourceTypes();
            return(View(resource));
        }
Esempio n. 5
0
        public ActionResult Edit(int?id, ProblemResourceViewModel resource)
        {
            if (id == null)
            {
                TempData["DangerMessage"] = "Задачата не е намерена";
                return(RedirectToAction("Index", "Problems"));
            }

            if (resource.Type == ProblemResourceType.Video && string.IsNullOrEmpty(resource.Link))
            {
                ModelState.AddModelError("Link", "Линкът не може да бъде празен");
            }
            else if (resource.Type != ProblemResourceType.Video && (resource.File == null || resource.File.ContentLength == 0))
            {
                ModelState.AddModelError("File", "Файлът е задължителен");
            }

            if (ModelState.IsValid)
            {
                var existingResource = this.Data.Resources
                                       .All()
                                       .FirstOrDefault(res => res.Id == id);

                if (existingResource == null)
                {
                    TempData["DangerMessage"] = "Ресурсът не е намерен";
                    return(RedirectToAction("Index", "Problems"));
                }

                existingResource.Name    = resource.Name;
                existingResource.Type    = resource.Type;
                existingResource.OrderBy = resource.OrderBy;

                if (existingResource.Type == ProblemResourceType.Video)
                {
                    existingResource.Link = resource.Link;
                }
                else
                {
                    existingResource.File          = resource.File.InputStream.ToByteArray();
                    existingResource.FileExtension = resource.FileExtension;
                }

                this.Data.SaveChanges();

                return(RedirectToAction("Resource", "Problems", new { id = existingResource.ProblemId }));
            }

            resource.AllTypes = this.GetAllResourceTypes();
            return(View(resource));
        }
Esempio n. 6
0
        // TODO: Transfer to ResourcesController
        public ActionResult AddResourceForm(int id)
        {
            // TODO: Add validation for Id
            var resourceViewModel = new ProblemResourceViewModel
            {
                Id       = id,
                AllTypes = Enum.GetValues(typeof(ProblemResourceType)).Cast <ProblemResourceType>().Select(v => new SelectListItem
                {
                    Text  = v.GetDescription(),
                    Value = ((int)v).ToString()
                })
            };

            return(this.PartialView("_ProblemResourceForm", resourceViewModel));
        }
        public ActionResult Edit(int?id, ProblemResourceViewModel resource)
        {
            if (id == null)
            {
                this.TempData.AddDangerMessage(Resource.Problem_not_found);
                return(this.RedirectToAction(GlobalConstants.Index, "Problems"));
            }

            if (this.ModelState.IsValid)
            {
                var existingResource = this.Data.Resources
                                       .All()
                                       .FirstOrDefault(res => res.Id == id);

                if (existingResource == null)
                {
                    this.TempData.AddDangerMessage(Resource.Resource_not_found);
                    return(this.RedirectToAction(GlobalConstants.Index, "Problems"));
                }

                if (!this.CheckIfUserHasProblemPermissions(existingResource.ProblemId))
                {
                    this.TempData[GlobalConstants.DangerMessage] = "Нямате привилегиите за това действие";
                    return(this.RedirectToAction("Index", "Contests", new { area = "Administration" }));
                }

                existingResource.Name    = resource.Name;
                existingResource.Type    = resource.Type;
                existingResource.OrderBy = resource.OrderBy;

                if (existingResource.Type == ProblemResourceType.Link && !string.IsNullOrEmpty(resource.RawLink))
                {
                    existingResource.Link = resource.RawLink;
                }
                else if (resource.Type != ProblemResourceType.Link && resource.File != null && resource.File.ContentLength > 0)
                {
                    existingResource.File          = resource.File.InputStream.ToByteArray();
                    existingResource.FileExtension = resource.FileExtension;
                }

                this.Data.SaveChanges();

                return(this.RedirectToAction("Resource", "Problems", new { id = existingResource.ProblemId }));
            }

            resource.AllTypes = EnumConverter.GetSelectListItems <ProblemResourceType>();
            return(this.View(resource));
        }
Esempio n. 8
0
        public ActionResult Edit(int?id, ProblemResourceViewModel resource)
        {
            if (id == null)
            {
                this.TempData[GlobalConstants.DangerMessage] = "Задачата не е намерена";
                return(this.RedirectToAction(GlobalConstants.Index, "Problems"));
            }

            if (this.ModelState.IsValid)
            {
                var existingResource = this.Data.Resources
                                       .All()
                                       .FirstOrDefault(res => res.Id == id);

                if (existingResource == null)
                {
                    this.TempData[GlobalConstants.DangerMessage] = "Ресурсът не е намерен";
                    return(this.RedirectToAction(GlobalConstants.Index, "Problems"));
                }

                existingResource.Name    = resource.Name;
                existingResource.Type    = resource.Type;
                existingResource.OrderBy = resource.OrderBy;

                if (existingResource.Type == ProblemResourceType.Video && !string.IsNullOrEmpty(resource.Link))
                {
                    existingResource.Link = resource.Link;
                }
                else if (resource.Type != ProblemResourceType.Video && resource.File != null && resource.File.ContentLength > 0)
                {
                    existingResource.File          = resource.File.InputStream.ToByteArray();
                    existingResource.FileExtension = resource.FileExtension;
                }

                this.Data.SaveChanges();

                return(this.RedirectToAction("Resource", "Problems", new { id = existingResource.ProblemId }));
            }

            resource.AllTypes = EnumConverter.GetSelectListItems <ProblemResourceType>();
            return(this.View(resource));
        }
        public ActionResult Create(int id)
        {
            if (!this.CheckIfUserHasProblemPermissions(id))
            {
                this.TempData[GlobalConstants.DangerMessage] = "Нямате привилегиите за това действие";
                return(this.RedirectToAction("Index", "Contests", new { area = "Administration" }));
            }

            var problem = this.Data.Problems.All().FirstOrDefault(pr => pr.Id == id);

            if (problem == null)
            {
                this.TempData.AddDangerMessage(Resource.Problem_not_found);
                return(this.RedirectToAction(GlobalConstants.Index, "Problems"));
            }

            int orderBy;
            var resources = problem.Resources.Where(res => !res.IsDeleted);

            if (!resources.Any())
            {
                orderBy = 0;
            }
            else
            {
                orderBy = resources.Max(res => res.OrderBy) + 1;
            }

            var resource = new ProblemResourceViewModel
            {
                ProblemId   = id,
                ProblemName = problem.Name,
                OrderBy     = orderBy,
                AllTypes    = EnumConverter.GetSelectListItems <ProblemResourceType>()
            };

            return(this.View(resource));
        }