public static async Task <UserProblem> CreateAsync(UserProblem userProblem) { using (var userProblemRepository = new UserProblemRepository()) { return(await userProblemRepository.CreateAsync(userProblem)); } }
//修改用户表回答问题数 //返回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); }
//运行结果模块 public ActionResult Result(int id) { SetSessionAndCookie(); UserProblem up = entity.UserProblem.Where(p => p.ID == id).FirstOrDefault(); return(View(up)); }
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)); } }
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); }
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."); }
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); }
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); }