public async Task GetStudents(int projectId, StatusInProject status) { if (status != StatusInProject.Approved && status != StatusInProject.Canceled && status != StatusInProject.InProccessing) { Response.StatusCode = 400; return;// null; } string userId = AuthJWT.GetCurrentId(HttpContext, out int statusId); if (statusId != 0 || userId == null) { Response.StatusCode = 401; return;// null; } var proj = await ApplicationUser.CheckAccessEditProject(_db, projectId, userId); if (proj == null) { Response.StatusCode = 404; return;// null; } var usersShort = await proj.GetStudentsShortEntity(_db, status); Response.ContentType = "application/json"; await Response.WriteAsync(JsonConvert.SerializeObject(usersShort, new JsonSerializerSettings { Formatting = Formatting.Indented })); //return usersShort; }
//список id пользователей проекта с определенным статусом public async Task <List <string> > GetStudents(ApplicationDbContext db, StatusInProject status) { return(await this.GetStudentsQuery(db, status).ToListAsync()); //List<UserShort> res = new List<UserShort>(); // return await db.Entry(this).Collection(x1 => x1.ProjectUsers).Query().Where(x1 => x1.Status == status).Select(x1 => x1.UserId).ToListAsync(); }
public async Task <bool> ChangeStatus(ApplicationDbContext db, StatusInProject newStatus) { try { this.Status = newStatus; await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException ex) { return(false); } return(true); }
//не создает запись если ее нет,нет валидации public async Task <bool?> ChangeStatusUser(ApplicationDbContext db, StatusInProject newStatus, string userId) { var record = await db.Entry(this).Collection(x1 => x1.ProjectUsers).Query().FirstOrDefaultAsync(x1 => x1.UserId == userId); if (record == null) { return(false); } if (!await record.ChangeStatus(db, newStatus)) { return(null); } return(true); }
//создает если надо и изменяет запись .(если записи нет то создаст ее.) у записи будет переданный статус, нет валидации //null-если ошибка public async Task <bool?> CreateChangeStatusUser(ApplicationDbContext db, StatusInProject newStatus, string userId) { bool exists = false; var record = await db.Entry(this).Collection(x1 => x1.ProjectUsers).Query().FirstOrDefaultAsync(x1 => x1.UserId == userId); if (record == null) { db.ProjectUsers.Add(new ProjectUser(userId, this.Id, newStatus)); await db.SaveChangesAsync(); } else { exists = true; if (!await record.ChangeStatus(db, newStatus)) { return(null); } } return(exists); }
public async Task GetUserRequests(StatusInProject statusInProject) { string userId = AuthJWT.GetCurrentId(HttpContext, out int status); if (status != 0 || userId == null) { Response.StatusCode = 401; return;// null; } var res = await ApplicationUser.GetUserRequests(_db, userId, statusInProject); //res.ForEach(x1=> //{ //}); Response.ContentType = "application/json"; await Response.WriteAsync(JsonConvert.SerializeObject(res, new JsonSerializerSettings { Formatting = Formatting.Indented })); //return await ApplicationUser.GetUserRequests(_db, userId,statusInProject); }
public async Task <bool> ChangeStatusUserProject([FromForm] int projectId, [FromForm] string studentId, [FromForm] StatusInProject newStatus) { if (newStatus != StatusInProject.InProccessing && newStatus != StatusInProject.Canceled && newStatus != StatusInProject.Approved && newStatus != StatusInProject.Moderator) { Response.StatusCode = 400; return(false); } string userId = AuthJWT.GetCurrentId(HttpContext, out int statusId); if (statusId != 0 || userId == null) { Response.StatusCode = 401; return(false); } var proj = await ApplicationUser.CheckAccessEditProject(_db, projectId, userId); if (proj == null) { Response.StatusCode = 404; return(false); } bool?res = await proj.ChangeStatusUserByLead(_db, newStatus, studentId); if (res == null) { Response.StatusCode = 527; return(false);// null; } return((bool)res); }
//проекты в которые пользователь подал заявки, картинки устанавливаются,без сортировки по актуальности public async static Task <List <ProjectShort> > GetUserRequests(ApplicationDbContext db, string userId, StatusInProject statusInProject) { var res = await db.ProjectUsers.Where(x1 => x1.UserId == userId && x1.Status == statusInProject). Join(db.Projects, x1 => x1.ProjectId, x2 => x2.Id, (x1, x2) => x2).Select(x1 => new ProjectShort(x1.Name, x1.Id) { Status = statusInProject }).ToListAsync(); await ProjectShort.SetMainImages(db, res); return(res); }
//список пользователей проекта с определенным статусом public async Task <List <UserShort> > GetStudentsShortEntity(ApplicationDbContext db, StatusInProject status) { //List<UserShort> res = new List<UserShort>(); return(await this.GetStudentsQuery(db, status).Join(db.Users, x1 => x1, x2 => x2.Id, (x1, x2) => new UserShort(x2.Name, x2.Id)).ToListAsync()); }
private IQueryable <string> GetStudentsQuery(ApplicationDbContext db, StatusInProject status) { //List<UserShort> res = new List<UserShort>(); return(db.Entry(this).Collection(x1 => x1.ProjectUsers).Query().Where(x1 => x1.Status == status).Select(x1 => x1.UserId)); }
public ProjectUser(string userId, int projectId, StatusInProject status) : this(userId, projectId) { Status = status; }