Exemple #1
0
 public static async Task <UserProblem> CreateAsync(UserProblem userProblem)
 {
     using (var userProblemRepository = new UserProblemRepository())
     {
         return(await userProblemRepository.CreateAsync(userProblem));
     }
 }
Exemple #2
0
        //修改用户表回答问题数
        //返回int(1:成功,0:不成功)
        public int UpdateUserProNumber(int proid, int userid, int resultid)
        {
            int         result   = 0;
            User        user     = entity.User.Where(p => p.ID == userid).FirstOrDefault();
            UserProblem updateup = entity.UserProblem.Where(p => p.ProblemID == proid && p.UserID == userid).FirstOrDefault();

            if (updateup == null)
            {
                user.Problems++;
                if (resultid == 2)
                {
                    user.Accepteds++;
                }
            }
            user.Problems = user.Problems;

            entity.Entry <User>(user).State = System.Data.EntityState.Modified;
            int i = entity.SaveChanges();

            if (i == 0)
            {
                user.Problems--;
                entity.Entry <User>(user).State = System.Data.EntityState.Modified;
                entity.SaveChanges();
                return(result);
            }
            result = 1;
            return(result);
        }
Exemple #3
0
        //运行结果模块
        public ActionResult Result(int id)
        {
            SetSessionAndCookie();
            UserProblem up = entity.UserProblem.Where(p => p.ID == id).FirstOrDefault();

            return(View(up));
        }
Exemple #4
0
        public async Task <IHttpActionResult> Create([FromBody] UserProblemModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var userProblem = new UserProblem
                {
                    UserId     = Identity.Id,
                    ProblemId  = model.ProblemId,
                    DistrictId = model.DistrictId,
                    Date       = DateTime.Now,
                    Order      = model.Order
                };

                var result = await UserProblemCore.CreateAsync(userProblem);

                if (result == null)
                {
                    return(BadRequest("Error adding the problem to the user"));
                }

                return(Ok(userProblem));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Exemple #5
0
        public async Task <Problem> AssignAsync <TInputModel>(PlanItUser user, TInputModel model)
        {
            var input = AutoMapperConfig.MapperInstance.Map <Problem>(model);

            var problem = new Problem
            {
                Name         = input.Name,
                Instructions = input.Instructions,
                SubProjectId = input.SubProjectId,
                DueDate      = input.DueDate?.ToUniversalTime(),
                HourlyRate   = input.HourlyRate,
            };

            problem.ProgressStatus = await this.progressStatusesService
                                     .GetByNameAsync(GlobalConstants.ProgressStatusAssigned);

            var userProblem = new UserProblem
            {
                User    = user,
                Problem = problem,
            };

            problem.UserProblems.Add(userProblem);

            await this.problemsRepository.AddAsync(problem);

            await this.problemsRepository.SaveChangesAsync();

            return(problem);
        }
Exemple #6
0
        public async Task CreateProblemForUser(string message, ulong userId)
        {
            if (message.Length >= 1800)
            {
                return;
            }

            if (_problemBoardChannel is null)
            {
                InitializeResources();
            }

            var account = _problemProvider.GetAccount(userId);

            if (performingCleanup)
            {
                await _generalChannel.SendMessageAsync("I am currently performing a cleanup. Please try submitting your problem again in about five minutes.");

                return;
            }

            var author = await GetTutorialUserById(userId);

            if (author is null)
            {
                Logger.Log($"Could not create a Problem in ProblemBoard for user with id {userId}. User not found.");
                return;
            }

            if (account.Problems.Count != 0)
            {
                var notice = $"{author.Mention}, {_lang.GetPooledResource("MULTIPLE_PROBLEMS_NOTICE")}";
                await _generalChannel.SendMessageAsync(notice);
            }

            var msg = await _problemBoardChannel.SendMessageAsync("_A problem new is being created..._");

            var problemObj = new UserProblem
            {
                CreatedAt = DateTime.Now,
                MessageId = msg.Id
            };

            account.Problems.Add(problemObj);
            _problemProvider.SaveAccount(account);

            var problemId = account.Problems.Count - 1;

            var problemMessage = $"[Problem ID: {problemId}] [By: {author.Mention}]\n{message}";

            await msg.ModifyAsync(m => m.Content = problemMessage);

            await _generalChannel.SendMessageAsync($":shield:  {author.Mention}, your problem with ID ({problemId}) has been created.");
        }
Exemple #7
0
        public async Task <Problem> AddUserAsync(int taskId, PlanItUser user)
        {
            var problem = await this.problemsRepository
                          .All()
                          .Where(t => t.Id == taskId)
                          .FirstOrDefaultAsync();

            var userProblem = new UserProblem
            {
                User    = user,
                Problem = problem,
            };

            problem.UserProblems.Add(userProblem);

            this.problemsRepository.Update(problem);
            await this.problemsRepository.SaveChangesAsync();

            return(problem);
        }
Exemple #8
0
        public void AnswerPro(FormCollection col)
        {
            SetSessionAndCookie();
            string mycode = col["Code"];
            string id     = col["id"];

            Session["Evaluate"] = col["Eva"];

            if ((!string.IsNullOrEmpty(id)) && (Session["Evaluate"] != null))
            {
                short evaluate = Convert.ToInt16(Session["Evaluate"]);


                int     i   = Convert.ToInt16(id);
                Problem pro = entity.Problem.Where(p => p.ID == i).FirstOrDefault();
                if (pro != null)
                {
                    int userid   = Convert.ToInt16(Session["UId"]);
                    int resultid = Judge(mycode, pro.ID, userid);

                    //修改问题表回答人数
                    UserProblem updateup = entity.UserProblem.Where(p => p.ProblemID == pro.ID && p.UserID == userid).FirstOrDefault();
                    if (updateup == null)
                    {
                        pro.Answers++;
                    }
                    pro.Answers = pro.Answers;
                    entity.Entry <Problem>(pro).State = System.Data.EntityState.Modified;
                    int sc = entity.SaveChanges();

                    //修改记录表答题量
                    int arp = AddRecordPro();

                    //修改用户表回答问题数
                    int uupn = UpdateUserProNumber(pro.ID, userid, resultid);

                    //插入用户问题表记录
                    UserProblem UserPro = new UserProblem();
                    UserPro.UserID     = userid;
                    UserPro.ProblemID  = i;
                    UserPro.ResultID   = resultid;
                    UserPro.Runtime    = Convert.ToInt32(AvgRunTime);
                    UserPro.Memory     = pro.MemLimit;
                    UserPro.Language   = "C/C++";
                    UserPro.Code       = mycode;
                    UserPro.Evaluate   = evaluate;
                    UserPro.SubmitDate = DateTime.Now;
                    entity.UserProblem.Add(UserPro);
                    int up = entity.SaveChanges();

                    //修改结果表中某种结果类型问题数
                    Result result = entity.Result.Where(p => p.ID == resultid).FirstOrDefault();
                    result.ProNumber++;
                    entity.Entry <Result>(result).State = System.Data.EntityState.Modified;
                    int res = entity.SaveChanges();

                    //重新统计评价
                    List <UserProblem> UPList = entity.UserProblem.Where(p => p.ProblemID == i).ToList();
                    double             ProEva = 0;
                    foreach (var item in UPList)
                    {
                        ProEva += item.Evaluate;
                    }
                    ProEva /= UPList.Count();
                    if (ProEva < 5)
                    {
                        ProEva += 1;
                    }
                    pro.Evaluate = (short)ProEva;
                    entity.Entry <Problem>(pro).State = System.Data.EntityState.Modified;
                    int eva = entity.SaveChanges();


                    if ((sc != 0) && (arp != 0) && (uupn != 0) && (up != 0) && (res != 0) && (eva != 0))
                    {
                        Response.Write(JsHelper.Messagebox("提交成功!", "Problem?id=" + id));
                    }
                    Response.Write(JsHelper.Messagebox("提交不成功!", "Problem?id=" + id));
                }
                Response.Write(JsHelper.Messagebox("提交不成功!", "Problem?id=" + id));
            }

            Response.Write(JsHelper.Messagebox("提交不成功!", "Problem?id=" + id));
        }
        /**
         * return Task<bool> cause GetAllUsers
         * can't await void return type actions
         */
        public async Task <bool> ConfigureSeedingAsync(User user)
        {
            int from = 1, count = 50;

            while (from <= MAX_SUBMISSION)
            {
                ActionDto response = await CallApiAsync(user.Handle, from, count);

                if (response.status != null && response.status.Equals("OK"))
                {
                    foreach (SubmissionDto submission in response.result)
                    {
                        if (submission.verdict.Equals("OK"))
                        {
                            //          Console.WriteLine(userHandle + " submission " + submission.Problem.name +
                            //", " + submission.Problem.index + ", " + submission.verdict);
                            int     contestId   = submission.Problem.contestId;
                            string  problemName = submission.Problem.name;
                            string  index       = submission.Problem.index;
                            int     rating      = submission.Problem.rating;
                            Problem p           = _context.Problems.FirstOrDefault(problem => problem.Name == problemName);
                            if (p == null)
                            {
                                Problem problem = new Problem
                                {
                                    Id     = Guid.NewGuid(),
                                    Name   = problemName,
                                    Link   = "https://codeforces.com/problemset/problem/" + contestId + "/" + index,
                                    Index  = index,
                                    Rating = rating,
                                };
                                _context.Problems.Add(problem);
                                Random      random      = new Random();
                                double      value       = random.NextDouble() * (5.0 - 1.0) + 1.0;
                                UserProblem userProblem = new UserProblem
                                {
                                    Problem = problem,
                                    User    = user,
                                    Rating  = value
                                };
                                _context.UserProblems.Add(userProblem);
                                foreach (string tag in submission.Problem.tags)
                                {
                                    Tag t = _context.Tags.FirstOrDefault(tg => tg.Title == tag);
                                    if (t != null)
                                    {
                                        _context.ProblemTags.Add(new ProblemTag {
                                            Tag = t, Problem = problem
                                        });
                                        //_context.Tags.Add(new Tag { Id = Guid.NewGuid(), Title = tag });
                                        //t = _context.Tags.FirstOrDefault(tg => tg.Title == tag);
                                    }
                                }
                                if (_context.SaveChanges() > 0)
                                {
                                    Console.WriteLine("problem " + problemName + " added successfully with it's tags");
                                }
                                else
                                {
                                    throw new Exception("Error while adding problem " + problemName);
                                }
                            }
                        }
                    }
                }
                else
                {
                    throw new Exception("user " + user.Handle +
                                        ", error while fetching submessions from: " + from + " count: " + count);
                }
                from += count;
                Console.WriteLine("------------------------------------------");
            }
            return(true);
        }