public async Task <IActionResult> GetEventSchoolByName(string eventName, string schoolName) { var sqlDataBase = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); int userId = _authenticationInfo.ActualUser.UserId; using (var ctx = new SqlStandardCallContext()) { EventQueries eventQueries = new EventQueries(ctx, sqlDataBase); GroupQueries groupQueries = new GroupQueries(ctx, sqlDataBase); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, sqlDataBase); GroupData groupData = await groupQueries.GetIdSchoolByConnectUser(userId); EventData eventData; if (groupData == null) { int idSchool = await groupQueries.GetIdSchoolByName(schoolName); PeriodData periodData = await timedPeriodQueries.GetLastPeriodBySchool(idSchool); eventData = await eventQueries.GetEventSchoolBylNameAndPeriodId(eventName, periodData.ChildId); } else { eventData = await eventQueries.GetEventSchoolBylNameAndPeriodId(eventName, groupData.ZoneId); } return(Ok(eventData)); } }
public async Task <bool> CheckPeriodGivenDate(IStObjMap stObjMap, IAuthenticationInfo authenticationInfo, DateTime begDate, DateTime endDate) { var sqlDatabase = stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); var group = stObjMap.StObjs.Obtain <CustomGroupTable>(); int userId = authenticationInfo.ActualUser.UserId; using (var ctx = new SqlStandardCallContext()) { GroupQueries groupQueries = new GroupQueries(ctx, sqlDatabase); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, sqlDatabase); GroupData groupData = await groupQueries.GetIdSchoolByConnectUser(userId); PeriodData periodData = await timedPeriodQueries.GetCurrentPeriod(groupData.ZoneId); int shouldBeGreater = begDate.CompareTo(periodData.BegDate); int shouldBeLower = endDate.CompareTo(periodData.EndDate); if (shouldBeGreater >= 0 && shouldBeLower <= 0) { return(true); } else { return(false); } } }
public async Task <IActionResult> GetAllGradeProject() { SqlDefaultDatabase db = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); int userId = _authenticationInfo.ActualUser.UserId; using (var ctx = new SqlStandardCallContext()) { ProjectQueries projectQueries = new ProjectQueries(ctx, db); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, db); TimedUserQueries timedUserQueries = new TimedUserQueries(ctx, db); UserQueries userQueries = new UserQueries(ctx, db); GroupQueries groupQueries = new GroupQueries(ctx, db); GroupData groupData = await groupQueries.GetIdSchoolByConnectUser(userId); AclQueries aclQueries = new AclQueries(ctx, db); if (await aclQueries.VerifyGrantLevelByUserId(112, await aclQueries.GetAclIdBySchoolId(groupData.ParentZoneId), userId, Operator.SuperiorOrEqual) == false) { Result result = new Result(Status.Unauthorized, "Vous n'etes pas autorisé à utiliser cette fonctionnalité !"); return(this.CreateResult(result)); } List <ProjectInfosJuryData> projects = await projectQueries.getAllProjectsGrade(groupData.ZoneId); List <ProjectForumResultData> listToSend = GetProjectsOfForum(projects); return(Ok(listToSend)); } }
public async Task <bool> CheckInPeriod(IStObjMap stObjMap, IAuthenticationInfo authenticationInfo) { var sqlDatabase = stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); var group = stObjMap.StObjs.Obtain <CustomGroupTable>(); int userId = authenticationInfo.ActualUser.UserId; using (var ctx = new SqlStandardCallContext()) { GroupQueries groupQueries = new GroupQueries(ctx, sqlDatabase); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, sqlDatabase); GroupData groupData = await groupQueries.GetIdSchoolByConnectUser(userId); PeriodData periodData = await timedPeriodQueries.GetCurrentPeriod(groupData.ZoneId); DateTime currentDateTime = DateTime.UtcNow; int shoulbBeLowerOrEqual = DateTime.Compare(periodData.BegDate, currentDateTime); int shouldBeGreaterOrEqual = DateTime.Compare(periodData.EndDate, currentDateTime); if (shoulbBeLowerOrEqual > 0 || shouldBeGreaterOrEqual < 0) { return(false); } else { return(true); } } }
public async Task <IActionResult> GetInfosOwnAccount() { int userId = _authenticationInfo.ActualUser.UserId; var sqlDataBase = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); using (var ctx = new SqlStandardCallContext()) { AccountUserData accountUserData = new AccountUserData(); PeriodServices periodService = new PeriodServices(); UserQueries userQueries = new UserQueries(ctx, sqlDataBase); GroupQueries groupQueries = new GroupQueries(ctx, sqlDataBase); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, sqlDataBase); TimedUserQueries timedUserQueries = new TimedUserQueries(ctx, sqlDataBase); //Donnée de l'utilisateur UserData userData = await userQueries.GetInfosUserById(userId); //Derniere PeriodId de l'user et timedUserId TimedUserData timedUser = await timedUserQueries.GetLastTimedUserId(userId); if (timedUser == null) { accountUserData.UserData = userData; accountUserData.Group = "User"; return(Ok(accountUserData)); } //Recuperer Groupe du timedUser List <string> listGroupUser = await groupQueries.GetAllGroupOfTimedUserByPeriod(timedUser.TimePeriodId, timedUser.TimedUserId); string group = listGroupUser.Find(x => x.StartsWith("S0") || x.StartsWith("S1") || x == "Teacher" || x == "Administration"); string spec = listGroupUser.Find(x => x == "IL" || x == "SR"); if (spec != null) { group += "-" + spec; } accountUserData.UserData = userData; accountUserData.Group = group; if (await periodService.CheckInPeriod(_stObjMap, _authenticationInfo)) { accountUserData.IsActual = true; } else { accountUserData.IsActual = false; } return(Ok(accountUserData)); } }
public async Task <IActionResult> GetAllPeriod(int idZone) { var sqlDataBase = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); using (var ctx = new SqlStandardCallContext()) { TimedPeriodQueries timedPeriod = new TimedPeriodQueries(ctx, sqlDataBase); DateTime dateNow = DateTime.UtcNow; List <PeriodData> period = await timedPeriod.GetAllPeriodsBySchool(idZone); return(Ok(period)); } }
public async Task <IActionResult> GetAllTypeProjectsOfASchool(int idSchool, char type) { SqlDefaultDatabase db = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); int userId = _authenticationInfo.ActualUser.UserId; using (var ctx = new SqlStandardCallContext()) { ProjectQueries projectQueries = new ProjectQueries(ctx, db); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, db); TimedUserQueries timedUserQueries = new TimedUserQueries(ctx, db); UserQueries userQueries = new UserQueries(ctx, db); GroupQueries groupQueries = new GroupQueries(ctx, db); PeriodData periodData = await timedPeriodQueries.GetLastPeriodBySchool(idSchool); //Implementer check date period TimedUserData timedUserData = await timedUserQueries.GetTimedUser(userId, periodData.ChildId); if (timedUserData == null) { timedUserData = new TimedUserData { TimedUserId = 0 }; } IEnumerable <AllProjectInfoData> projectData = await projectQueries.GetAllTypeProjectSpecificToSchoolWithTimedUserNote(periodData.ChildId, type, timedUserData.TimedUserId); for (var i = 0; i < projectData.Count(); i++) { IEnumerable <UserByProjectData> userByProject = await userQueries.GetUserByProject(projectData.ElementAt( i ).ProjectStudentId); projectData.ElementAt(i).BegDate = userByProject.ElementAt(0).BegDate; projectData.ElementAt(i).EndDate = userByProject.ElementAt(0).EndDate; foreach (var e in userByProject) { IEnumerable <GroupData> groupDatas = await groupQueries.GetAllGroupByTimedUser(e.TimedUserId); projectData.ElementAt(i).FirstName.Add(e.FirstName); projectData.ElementAt(i).LastName.Add(e.LastName); projectData.ElementAt(i).TimedUserId.Add(e.TimedUserId); projectData.ElementAt(i).UserId.Add(e.UserId); } } return(Ok(projectData)); } }
public async Task <IActionResult> CreateEvents([FromBody] SchoolEventChangeModel model) { int userId = _authenticationInfo.ActualUser.UserId; var sqlDataBase = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); var eventTable = _stObjMap.StObjs.Obtain <EventSchoolTable>(); using (var ctx = new SqlStandardCallContext()) { PeriodServices periodServices = new PeriodServices(); GroupQueries groupQueries = new GroupQueries(ctx, sqlDataBase); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, sqlDataBase); EventQueries eventQueries = new EventQueries(ctx, sqlDataBase); if (!await periodServices.CheckPeriodGivenDate(_stObjMap, _authenticationInfo, model.BegDate, model.EndDate)) { Result result = new Result(Status.BadRequest, "Ces Dates ne sont pas comprises dans la periode actuel"); return(this.CreateResult(result)); } GroupData groupData = await groupQueries.GetIdSchoolByConnectUser(userId); AclQueries aclQueries = new AclQueries(ctx, sqlDataBase); if (!await aclQueries.VerifyGrantLevelByUserId(112, await aclQueries.GetAclIdBySchoolId(groupData.ParentZoneId), userId, Operator.SuperiorOrEqual)) { Result result = new Result(Status.Unauthorized, "Vous n'etes pas autorisé à utiliser cette fonctionnalité !"); return(this.CreateResult(result)); } if (!model.IsOther) { model.Name += "-" + await timedPeriodQueries.GetGroupNameActualPeriod(groupData.ZoneId, groupData.ParentZoneId); } EventStruct eventResult = await eventTable.CreateEvent(ctx, model.Name, model.BegDate, model.EndDate, groupData.ZoneId, userId); if (eventResult.Status == 1) { Result result = new Result(Status.Unauthorized, "Cette evenement existe deja dans votre école !"); return(this.CreateResult(result)); } List <EventData> events = await eventQueries.GetAllEventsByIdSchool(groupData.ParentZoneId); return(Ok(events)); } }
public async Task <IActionResult> GetAllPublicNote() { SqlDefaultDatabase db = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); int userId = _authenticationInfo.ActualUser.UserId; using (var ctx = new SqlStandardCallContext()) { ProjectQueries projectQueries = new ProjectQueries(ctx, db); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, db); TimedUserQueries timedUserQueries = new TimedUserQueries(ctx, db); UserQueries userQueries = new UserQueries(ctx, db); GroupQueries groupQueries = new GroupQueries(ctx, db); GroupData groupData = await groupQueries.GetIdSchoolByConnectUser(userId); List <ProjectForumResultData> projects = await projectQueries.GetAllPublicsNoteByTimedPeriodId(groupData.ZoneId); return(Ok(projects)); } }
public async Task <IEnumerable <AllProjectInfoData> > GetProjectsEvaluate(int idSchool) { SqlDefaultDatabase db = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); int userId = _authenticationInfo.ActualUser.UserId; using (var ctx = new SqlStandardCallContext()) { ProjectQueries projectQueries = new ProjectQueries(ctx, db); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, db); TimedUserQueries timedUserQueries = new TimedUserQueries(ctx, db); UserQueries userQueries = new UserQueries(ctx, db); GroupQueries groupQueries = new GroupQueries(ctx, db); PeriodData periodData = await timedPeriodQueries.GetLastPeriodBySchool(idSchool); //Implementer check date period IEnumerable <AllProjectInfoData> projectData = await projectQueries.GetAllProjectTimedByJuryId(userId, periodData.ChildId); return(projectData); } }
public async Task <IActionResult> ChangeDateOfPeriod([FromBody] PeriodChangeDateModel periodChangeDateModel) { int userId = _authenticationInfo.ActualUser.UserId; var sqlDataBase = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); var group = _stObjMap.StObjs.Obtain <CustomGroupTable>(); using (var ctx = new SqlStandardCallContext()) { TimedPeriodQueries timedPeriod = new TimedPeriodQueries(ctx, sqlDataBase); PeriodData period = await timedPeriod.GetPeriodById(periodChangeDateModel.idPeriod); await timedPeriod.UpdatePeriodDate(periodChangeDateModel.idPeriod, periodChangeDateModel.begDate, periodChangeDateModel.endDate); if (periodChangeDateModel.begDate.Year > period.BegDate.Year || periodChangeDateModel.begDate.Year < period.BegDate.Year) { string groupName = periodChangeDateModel.begDate.Year + "-0" + periodChangeDateModel.begDate.Month; await group.Naming.GroupRenameAsync(ctx, userId, periodChangeDateModel.idPeriod, groupName); } return(Ok()); } }
public static async Task <(UserQueries, TimedUserQueries, ProjectStudentStruct, TimedUserData)> SaveProjectPi( ProjectPi project, ProjectStudentTable projectTable, int userId, SqlDefaultDatabase db, SqlStandardCallContext ctx, string type, ProjectUrlTable projectUrlTable, CustomGroupTable CustomGroupTable ) { GroupQueries groupQueries = new GroupQueries(ctx, db); TraitContextQueries traitContext = new TraitContextQueries(ctx, db); TimedUserQueries timedUserQueries = new TimedUserQueries(ctx, db); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, db); UserQueries userQueries = new UserQueries(ctx, db); GroupData school = await groupQueries.GetIdSchoolByConnectUser(userId); // PeriodData timePeriod = await timedPeriodQueries.GetLastPeriodBySchool(school.ZoneId); TimedUserData timedUser = await timedUserQueries.GetTimedUser(userId, school.ZoneId); int traitContextId = await traitContext.GetTraitContextId(type); string email = project.team.leader; int leaderId; if (email == "None") { leaderId = 0; } else { UserData user = await userQueries.GetUserByEmail(email); TimedUserData timedLeader = await timedUserQueries.GetTimedUser(user.UserId, school.ZoneId); leaderId = user.UserId; } ProjectStudentStruct ProjectCreate = await projectTable.CreateProjectStudent( ctx, userId, school.ZoneId, project.name.project_name, traitContextId, string.Join(";", project.technologies.technologies), project.logo.url, project.slogan.slogan, project.pitch.pitch, leaderId, type ); if (project.git.url != "None") { await projectUrlTable.CreateOrUpdateProjectUrl(ctx, ProjectCreate.ProjectStudentId, project.git.url, "Git"); } foreach (var item in project.semester.semester) { string semester = "S0" + item.ToString(); int idSemester = await groupQueries.GetSpecificIdGroupByZoneIdAndGroupName(school.ZoneId, semester); await CustomGroupTable.AddUserAsync(ctx, userId, idSemester, ProjectCreate.ProjectStudentId, true); } string[] sector = project.semester.sector.Split(" - "); foreach (var item in sector) { int idSector = await groupQueries.GetSpecificIdGroupByZoneIdAndGroupName(school.ZoneId, item); await CustomGroupTable.AddUserAsync(ctx, userId, idSector, ProjectCreate.ProjectStudentId, true); } return(userQueries, timedUserQueries, ProjectCreate, timedUser); }
public async Task <IActionResult> NoteProject([FromBody] NoteProjectViewModel model) { int userId = _authenticationInfo.ActualUser.UserId; TimedUserNoteProjectTable timedUserNoteProjectTable = _stObjMap.StObjs.Obtain <TimedUserNoteProjectTable>(); TimedUserTable timedUserTable = _stObjMap.StObjs.Obtain <TimedUserTable>(); EvaluatesTable evaluatesTable = _stObjMap.StObjs.Obtain <EvaluatesTable>(); SqlDefaultDatabase db = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); PeriodServices periodServices = new PeriodServices(); using (var ctx = new SqlStandardCallContext()) { ProjectQueries projectQueries = new ProjectQueries(ctx, db); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, db); UserQueries userQueries = new UserQueries(ctx, db); TimedUserQueries timedUserQueries = new TimedUserQueries(ctx, db); AclQueries aclQueries = new AclQueries(ctx, db); GroupQueries groupQueries = new GroupQueries(ctx, db); //Case Change Grade by Administration ==================================================================================================================== if (model.User == ViewModels.TypeTimedUser.StaffMember) { if (!await periodServices.CheckInPeriod(_stObjMap, _authenticationInfo)) { Result result = new Result(Status.Unauthorized, "A la date d'aujourd'hui votre etablissement n'est dans une aucune periode"); return(this.CreateResult(result)); } GroupData groupData = await groupQueries.GetIdSchoolByConnectUser(userId); if (!await aclQueries.VerifyGrantLevelByUserId(112, await aclQueries.GetAclIdBySchoolId(groupData.ParentZoneId), userId, Operator.SuperiorOrEqual)) { Result result = new Result(Status.Unauthorized, "Vous n'etes pas autorisé à utiliser cette fonctionnalité !"); return(this.CreateResult(result)); } await evaluatesTable.EvaluateOrUpdateGradeProject(ctx, model.JuryId, model.ProjectId, model.Grade); return(Ok()); } //========================================================================================================================================================= PeriodData periodData = await timedPeriodQueries.GetLastPeriodBySchool(model.SchoolId); TimedUserData timedUserData = await timedUserQueries.GetTimedUser(userId, periodData.ChildId); if (timedUserData == null) { TimedUserStruct timedUser = await timedUserTable.CreateOrUpdateTimedUserAsyncWithType(ctx, Data.TypeTimedUser.Anon, periodData.ChildId, userId); timedUserData = new TimedUserData { TimedUserId = timedUser.TimedUserId }; await timedUserNoteProjectTable.AddOrUpdateNote(ctx, timedUserData.TimedUserId, model.ProjectId, model.Grade); return(Ok()); } if (model.User == ViewModels.TypeTimedUser.Jury) { await evaluatesTable.EvaluateOrUpdateGradeProject(ctx, model.JuryId, model.ProjectId, model.Grade); } else { await timedUserNoteProjectTable.AddOrUpdateNote(ctx, timedUserData.TimedUserId, model.ProjectId, model.Grade); } return(Ok()); } }
public async Task <List <TimedStudentData> > GetAllUserByPeriod([FromBody] BddInfoModel model) { var sqlDatabase = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); IEnumerable <TimedStudentData> studentList = new List <TimedStudentData>(); List <TimedStudentData> timedStudentDatas = new List <TimedStudentData>(); int userId = _authenticationInfo.ActualUser.UserId; using (var ctx = new SqlStandardCallContext()) { AclQueries aclQueries = new AclQueries(ctx, sqlDatabase); if (!await aclQueries.VerifyGrantLevelByUserId(112, 9, userId, Operator.SuperiorOrEqual)) { Result result = new Result(Status.Unauthorized, "Vous n'etes pas autorisé à utiliser cette fonctionnalité !"); } TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, sqlDatabase); GroupQueries groupQueries = new GroupQueries(ctx, sqlDatabase); TimedUserQueries timedUserQueries = new TimedUserQueries(ctx, sqlDatabase); GroupData groupData = await groupQueries.GetIdSchoolByConnectUser(userId); //PeriodData periodData = await timedPeriodQueries.GetLastPeriodBySchool( groupData.ZoneId ); IEnumerable <GroupData> groupList = await groupQueries.GetAllGroupByPeriod(groupData.ZoneId); List <GroupData> groupFinal = groupList.ToList(); for (int i = 0; i < groupFinal.Count; i++) { studentList = await timedUserQueries.GetAllStudentInfosByGroup(groupFinal[i].GroupId, model.TableName, model.TableId); timedStudentDatas.AddRange(studentList); } } var duplicates = timedStudentDatas .GroupBy(x => x.UserId) .Where(g => g.Count() > 1) .Select(g => g.Select(gg => gg)); var single = timedStudentDatas .GroupBy(x => x.UserId) .Where(g => g.Count() == 1) .SelectMany(g => g.Select(gg => gg)); List <TimedStudentData> timedStudentDatasClean = new List <TimedStudentData>(); timedStudentDatasClean = single.ToList(); for (var i = 0; i < duplicates.Count(); i++) { var a = duplicates.ElementAt(i); if (a.ElementAt(0).GroupName == "S01" || a.ElementAt(0).GroupName == "S02") { a.ElementAt(0).GroupName = a.ElementAt(0).GroupName; } else if (a.ElementAt(1).GroupName == "SR") { a.ElementAt(0).GroupName = a.ElementAt(0).GroupName + " - " + a.ElementAt(1).GroupName; } else { a.ElementAt(0).GroupName = a.ElementAt(1).GroupName + " - " + a.ElementAt(0).GroupName; } timedStudentDatasClean.Add(a.ElementAt(0)); } ; return(timedStudentDatasClean); }
public static async Task <(UserQueries, TimedUserQueries, ProjectStudentStruct, TimedUserData)> SaveProjectPfh( ProjectPfh project, ProjectStudentTable projectTable, int userId, SqlDefaultDatabase db, SqlStandardCallContext ctx, string type, ProjectUrlTable projectUrlTable, CustomGroupTable CustomGroupTable ) { GroupQueries groupQueries = new GroupQueries(ctx, db); TraitContextQueries traitContext = new TraitContextQueries(ctx, db); TimedUserQueries timedUserQueries = new TimedUserQueries(ctx, db); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, db); UserQueries userQueries = new UserQueries(ctx, db); GroupData school = await groupQueries.GetIdSchoolByConnectUser(userId); // PeriodData timePeriod = await timedPeriodQueries.GetLastPeriodBySchool(school.ZoneId); TimedUserData timedUser = await timedUserQueries.GetTimedUser(userId, school.ZoneId); int traitContextId = await traitContext.GetTraitContextId(type); string email = project.team.leader; int leaderId; if (email == "None") { leaderId = 0; } else { UserData user = await userQueries.GetUserByEmail(email); TimedUserData timedLeader = await timedUserQueries.GetTimedUser(user.UserId, school.ZoneId); leaderId = user.UserId; } project.background.image = GetTomlFromGoogleDrive.GetUrlRessource(project.background.image); ProjectStudentStruct ProjectCreate = await projectTable.CreateProjectStudent( ctx, userId, school.ZoneId, project.name.project_name, traitContextId, project.logo.url, project.slogan.slogan, project.pitch.pitch, leaderId, type, project.background.image ); foreach (var item in project.semester.semester) { string semester = "S0" + item.ToString(); int idSemester = await groupQueries.GetSpecificIdGroupByZoneIdAndGroupName(school.ZoneId, semester); await CustomGroupTable.AddUserAsync(ctx, userId, idSemester, ProjectCreate.ProjectStudentId, true); } return(userQueries, timedUserQueries, ProjectCreate, timedUser); }
public async Task <IActionResult> GetAllSheet(int schoolId, char projectType, int semester) { SqlDefaultDatabase db = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); using (SqlStandardCallContext ctx = new SqlStandardCallContext()) { ProjectQueries projectQueries = new ProjectQueries(ctx, db); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, db); PeriodData School = await timedPeriodQueries.GetLastPeriodBySchool(schoolId); IEnumerable <AllProjectInfoData> listProject; if (semester > 0) { if (projectType == 'I' || projectType == 'H') { listProject = await projectQueries.GetAllTypeSchoolProject(School.ChildId, projectType, semester); } else { listProject = await projectQueries.GetAllTypeSchoolProject(School.ChildId, semester); } } else { if (projectType == 'I' || projectType == 'H') { listProject = await projectQueries.GetAllTypeSchoolProject(School.ChildId, projectType); } else { listProject = await projectQueries.GetAllTypeSchoolProject(School.ChildId); } } if (projectType == 'I') { List <ProjectPiSheet> projectsSheet = new List <ProjectPiSheet>(); foreach (var item in listProject) { string[] place = new string[2]; place[0] = item.ClassRoom; place[1] = item.ForumNumber.ToString(); string[] members = new string[item.UsersData.Count - 1]; string leader = ""; foreach (UserData usr in item.UsersData) { if (usr.UserId == item.LeaderId) { leader = usr.FirstName + " " + usr.LastName; } else { members[Array.IndexOf(members, null)] = usr.FirstName + " " + usr.LastName; } } (string, string[])team = (leader, members); ProjectPiSheet projectPiSheet = new ProjectPiSheet(place, item.GroupName, item.Semester, item.Sector, item.Logo, item.Slogan, item.Pitch, team, item.Technologies.ToArray()); projectsSheet.Add(projectPiSheet); } return(Ok(projectsSheet)); } else if (projectType == 'H') { List <ProjectPfhSheet> projectsSheet = new List <ProjectPfhSheet>(); foreach (var item in listProject) { string[] members = new string[item.UsersData.Count - 1]; string leader = ""; foreach (UserData usr in item.UsersData) { if (usr.UserId == item.LeaderId) { leader = usr.FirstName + " " + usr.LastName; } else { members[Array.IndexOf(members, null)] = usr.FirstName + " " + usr.LastName; } } (string, string[])team = (leader, members); string background = Convert.ToBase64String(new WebClient().DownloadData("https://drive.google.com/uc?id=143SNqM-rxFmDSrA7A2Wa29eu-gqhtdOn")); ProjectPfhSheet projectPfhSheet = new ProjectPfhSheet(item.GroupName, item.Semester, "", item.Logo, item.Slogan, item.Pitch, team, background); projectsSheet.Add(projectPfhSheet); } return(Ok(projectsSheet)); } else { List <ProjectSheet> projectsSheet = new List <ProjectSheet>(); foreach (var item in listProject) { string[] members = new string[item.UsersData.Count - 1]; string leader = ""; foreach (UserData usr in item.UsersData) { if (usr.UserId == item.LeaderId) { leader = usr.FirstName + " " + usr.LastName; } else { members[Array.IndexOf(members, null)] = usr.FirstName + " " + usr.LastName; } } (string, string[])team = (leader, members); if (item.Type == "H") { string background = Convert.ToBase64String(new WebClient().DownloadData("https://drive.google.com/uc?id=143SNqM-rxFmDSrA7A2Wa29eu-gqhtdOn")); ProjectPfhSheet projectPfhSheet = new ProjectPfhSheet(item.GroupName, item.Semester, "", item.Logo, item.Slogan, item.Pitch, team, background); projectsSheet.Add(projectPfhSheet); } else { string[] place = new string[2]; place[0] = item.ClassRoom; place[1] = item.ForumNumber.ToString(); ProjectPiSheet projectPiSheet = new ProjectPiSheet(place, item.GroupName, item.Semester, item.Sector, item.Logo, item.Slogan, item.Pitch, team, item.Technologies.ToArray()); projectsSheet.Add(projectPiSheet); } } return(Ok(projectsSheet)); } } }
public async Task <List <string> > GetGroupUserAccessPanel(int idZone) { List <string> listGroupToReturn = new List <string>(); int userId = _authenticationInfo.ActualUser.UserId; var sqlDataBase = _stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); if (userId == 0) { listGroupToReturn.Add("Anon"); return(listGroupToReturn); } listGroupToReturn.Add("User"); using (var ctx = new SqlStandardCallContext()) { TimedPeriodQueries timedPeriod = new TimedPeriodQueries(ctx, sqlDataBase); TimedUserQueries timedUser = new TimedUserQueries(ctx, sqlDataBase); GroupQueries groupsQueries = new GroupQueries(ctx, sqlDataBase); UserQueries userQueries = new UserQueries(ctx, sqlDataBase); DateTime dateNow = DateTime.UtcNow; List <PeriodData> periods = await timedPeriod.GetNumberWishPeriodBySchool(idZone, 2); PeriodData period = null; for (int i = 0; i < periods.Count; i++) { if (periods[i].BegDate.DayOfYear <= dateNow.DayOfYear && periods[i].EndDate.DayOfYear >= dateNow.DayOfYear) { period = periods[i]; break; } } if (period == null) { period = periods[0]; } TimedUserData timedUserData = await timedUser.GetTimedUser(userId, period.ChildId); if (timedUserData == null) { int adminIdZoneSchool = await groupsQueries.GetSpecificIdGroupByZoneIdAndGroupName(idZone, "Administration"); if (await userQueries.VerifyGroupUser(userId, adminIdZoneSchool) != 0) { listGroupToReturn.Add("Administration"); } return(listGroupToReturn); } listGroupToReturn = await timedUser.getWhichCat(timedUserData.TimedUserId, listGroupToReturn); if (!listGroupToReturn.Contains("StaffMember")) { return(listGroupToReturn); } List <string> listGroupsOfTimedUser = new List <string>(); listGroupsOfTimedUser = await groupsQueries.GetAllGroupOfTimedUserByPeriod(period.ChildId, timedUserData.TimedUserId); for (int i = 0; i < listGroupsOfTimedUser.Count; i++) { if (listGroupsOfTimedUser[i] == "Administration") { listGroupToReturn.Add("Administration"); } else if (listGroupsOfTimedUser[i] == "Teacher") { listGroupToReturn.Add("Teacher"); } } if (!listGroupToReturn.Contains("Administration")) { int adminIdZoneSchool = await groupsQueries.GetSpecificIdGroupByZoneIdAndGroupName(idZone, "Administration"); if (await userQueries.VerifyGroupUser(userId, adminIdZoneSchool) != 0) { listGroupToReturn.Add("Administration"); } } return(listGroupToReturn); } }
internal async Task AssignProjectToJury(IStObjMap stObjMap, IAuthenticationInfo authenticationInfo, List <JuryInfos> juryInfos, string type) { using (var ctx = new SqlStandardCallContext()) { var sqlDatabase = stObjMap.StObjs.Obtain <SqlDefaultDatabase>(); var groupTable = stObjMap.StObjs.Obtain <CustomGroupTable>(); var userTimedTable = stObjMap.StObjs.Obtain <TimedUserTable>(); EvaluatesTable evaluatesTable = stObjMap.StObjs.Obtain <EvaluatesTable>(); int userId = authenticationInfo.ActualUser.UserId; GroupQueries groupQueries = new GroupQueries(ctx, sqlDatabase); GroupData groupData = await groupQueries.GetIdSchoolByConnectUser(userId); string userName = Guid.NewGuid().ToString(); UserQueries userQueries = new UserQueries(ctx, sqlDatabase); TimedUserQueries timedUserQueries = new TimedUserQueries(ctx, sqlDatabase); ProjectQueries projectQueries = new ProjectQueries(ctx, sqlDatabase); TimedPeriodQueries timedPeriodQueries = new TimedPeriodQueries(ctx, sqlDatabase); ForumQueries forumQueries = new ForumQueries(ctx, sqlDatabase); //get the Begdate of the periode DateTime begDate = await timedPeriodQueries.GetBegDateOfPeriod(groupData.ZoneId); foreach (JuryInfos juryInfo in juryInfos) { if (juryInfo.Mail == "*****@*****.**") { Console.WriteLine("ok"); } int enterpriseId = 0; string groupName = "Jury " + juryInfo.Jury + "-" + begDate.Year + "/" + begDate.Month; int timedUserType = 0; //Check if the jury group exists or not at a moment int groupId = await groupQueries.GetSpecificIdGroupByZoneIdAndGroupName(groupData.ZoneId, groupName); if (groupId == 0) { groupId = await groupTable.CreateGroupAsync(ctx, userId, groupData.ZoneId); await groupTable.Naming.GroupRenameAsync(ctx, userId, groupId, groupName); } //Check if the enterprise group exists or not at a moment enterpriseId = await groupQueries.GetSpecificIdGroupByZoneIdAndGroupName(groupData.ZoneId, juryInfo.Entreprise); if (enterpriseId == 0) { enterpriseId = await groupTable.CreateGroupAsync(ctx, userId, groupData.ZoneId); await groupTable.Naming.GroupRenameAsync(ctx, userId, enterpriseId, juryInfo.Entreprise); } //Check if the user exists int idJury = await CheckIfUserExists(stObjMap, authenticationInfo, juryInfo.Mail, userName, juryInfo.Prenom, juryInfo.Nom); await groupTable.AddUserAsync(ctx, userId, groupId, idJury, true); await groupTable.AddUserAsync(ctx, userId, enterpriseId, idJury, true); //get the timed user type timedUserType = GetTimedUserType(type); //check if the timed user exists TimedUserData timedUserData = await userQueries.CheckIfTimedUserExists(idJury, groupData.ZoneId); if (timedUserData == null) { await userTimedTable.CreateOrUpdateTimedUserAsync(ctx, timedUserType, groupData.ZoneId, idJury); } else { bool isJury = await timedUserQueries.IsJury(timedUserData.TimedUserId); if (!isJury) { await userTimedTable.CreateOrUpdateTimedUserAsync(ctx, timedUserType, groupData.ZoneId, idJury); } } //get the project id by forumnumber ProjectData projectId; string groupName1 = "Vous êtes libre"; string groupName2 = "Vous êtes libre"; string groupName3 = "Vous êtes libre"; string groupName4 = "Vous êtes libre"; TimeSpan timeSpan1 = new TimeSpan(13, 30, 0); TimeSpan timeSpan2 = new TimeSpan(14, 15, 0); TimeSpan timeSpan3 = new TimeSpan(15, 00, 0); TimeSpan timeSpan4 = new TimeSpan(15, 45, 0); if (juryInfo.Groupe1 != 0) { projectId = await projectQueries.GetProjectIdByForumNumberAndPeriod(juryInfo.Groupe1, groupData.ZoneId); begDate = begDate.Date + timeSpan1; if (await forumQueries.IsProjectJudgedByJury(projectId.ProjectStudentId, groupId) == 0) { await evaluatesTable.EvaluateOrUpdateGradeProject(ctx, groupId, projectId.ProjectStudentId, -1, begDate); } groupName1 = projectId.GroupName; } if (juryInfo.Groupe2 != 0) { projectId = await projectQueries.GetProjectIdByForumNumberAndPeriod(juryInfo.Groupe2, groupData.ZoneId); begDate = begDate.Date + timeSpan2; if (await forumQueries.IsProjectJudgedByJury(projectId.ProjectStudentId, groupId) == 0) { await evaluatesTable.EvaluateOrUpdateGradeProject(ctx, groupId, projectId.ProjectStudentId, -1, begDate); } groupName2 = projectId.GroupName; } if (juryInfo.Groupe3 != 0) { projectId = await projectQueries.GetProjectIdByForumNumberAndPeriod(juryInfo.Groupe3, groupData.ZoneId); begDate = begDate.Date + timeSpan3; if (await forumQueries.IsProjectJudgedByJury(projectId.ProjectStudentId, groupId) == 0) { await evaluatesTable.EvaluateOrUpdateGradeProject(ctx, groupId, projectId.ProjectStudentId, -1, begDate); } groupName3 = projectId.GroupName; } if (juryInfo.Groupe4 != 0) { projectId = await projectQueries.GetProjectIdByForumNumberAndPeriod(juryInfo.Groupe4, groupData.ZoneId); begDate = begDate.Date + timeSpan4; if (await forumQueries.IsProjectJudgedByJury(projectId.ProjectStudentId, groupId) == 0) { await evaluatesTable.EvaluateOrUpdateGradeProject(ctx, groupId, projectId.ProjectStudentId, -1, begDate); } groupName4 = projectId.GroupName; } IEnumerable <ForumData> infoMail = await forumQueries.ForumInfoByJury(groupName); int nbProject = infoMail.Count(); string subject = "Votre participation au Forum PI D'IN'TECH"; string mailContent = @" <table align = 'center' border='0' cellpadding='0' cellspacing='0' height='100%' width='100%' id='bodyTable'> </tr> <tr> <td valign = 'top' id='templateBody'><table border = '0' cellpadding='0' cellspacing='0' width='100%' class='mcnTextBlock' style='min-width:100%;'> <tbody class='mcnTextBlockOuter'> <tr> <td valign = 'top' class='mcnTextBlockInner' style='padding-top:9px;'> <!--[if mso]> <table align = 'left' border='0' cellspacing='0' cellpadding='0' width='100%' style='width:100%;'> <tr> <![endif]--> <!--[if mso]> <td valign = 'top' width='600' style='width:600px;'> <![endif]--> <table align = 'left' border='0' cellpadding='0' cellspacing='0' style='max-width:100%; min-width:100%;' width='100%' class='mcnTextContentContainer'> <tbody><tr> <td valign = 'top' class='mcnTextContent' style='padding-top:0; padding-right:18px; padding-bottom:9px; padding-left:18px;'> <h1>Bonjour " + juryInfo.Prenom + " " + juryInfo.Nom + @"</h1> <p>Vous participez au forum des projets informatique de l'école IN'TECH le " + begDate.Day + "/0" + begDate.Month + "/" + begDate.Year + @".</p> <p>Vous appartenez au jury '" + groupName + @"'.<br> Au cours de cet évènement vous aurez l'occasion de juger les projets suivants: </p> <ul> <li>" + groupName1 + " à " + timeSpan1 + @"</li> <li>" + groupName2 + " à " + timeSpan2 + @"</li> <li>" + groupName3 + " à " + timeSpan3 + @"</li> <li>" + groupName4 + " à " + timeSpan4 + @"</li> </ul> Nous vous remercions de l’intérêt que vous portez à nos évènements.<br> Bonne continuation. </td> </tr> </tbody></table> <!--[if mso]> </td> <![endif]--> <!--[if mso]> </tr> </table> <![endif]--> </td> </tr> </tbody> </table></td> </tr> <tr> <td valign = 'top' id= 'templateFooter' > <td align = 'center' style='padding-left:9px;padding-right:9px;'> <table border = '0' cellpadding='0' cellspacing='0' width='100%' style='min-width:100%;' class='mcnFollowContent'> <tbody><tr> <td align = 'center' valign='top' style='padding-top:9px; padding-right:9px; padding-left:9px;'> <table align = 'center' border='0' cellpadding='0' cellspacing='0'> <tbody><tr> <td align = 'center' valign='top'> <!--[if mso]> <table align = 'center' border='0' cellspacing='0' cellpadding='0'> <tr> <![endif]--> </td> </tr> </tbody></table> </td> </tr> </tbody></table> </td> </tr> </tbody></table> </td> </tr> </tbody> </table> <tbody class='mcnDividerBlockOuter'> <tr> <td class='mcnDividerBlockInner' style='min-width: 100%; padding: 10px 18px 25px;'> <table class='mcnDividerContent' border='0' cellpadding='0' cellspacing='0' width='100%' style='min-width: 100%;border-top: 2px solid #EEEEEE;'> <tbody><tr> <td> <span></span> </td> </tr> </tbody></table> <!-- <td class='mcnDividerBlockInner' style='padding: 18px;'> <hr class='mcnDividerContent' style='border-bottom-color:none; border-left-color:none; border-right-color:none; border-bottom-width:0; border-left-width:0; border-right-width:0; margin-top:0; margin-right:0; margin-bottom:0; margin-left:0;' /> --> </td> </tr> </tbody> </table> <tbody class='mcnTextBlockOuter'> <tr> <td valign = 'top' class='mcnTextBlockInner' style='padding-top:9px;'> <!--[if mso]> <td valign = 'top' width='600' style='width:600px;'> <![endif]--> <table align = 'left' border='0' cellpadding='0' cellspacing='0' style='max-width:100%; min-width:100%;' width='100%' class='mcnTextContentContainer'> <tbody><tr> <td valign = 'top' class='mcnTextContent' style='padding-top:0; padding-right:18px; padding-bottom:9px; padding-left:18px;'> <br> <br> <strong>Notre adresse:</strong><br> 74 bis Avenue Maurice Thorez, 94200 Ivry-sur-Seine<br> Metro 7: Pierre et Marie Curie<br> <br> IN'TECH Paris </td> </tr> </tbody></table> <!--[if mso]> </td> <![endif]--> <!--[if mso]> </tr> </table> <![endif]--> </td> </tr> </tbody> </table></td> </tr> </table> <!--[if (gte mso 9)|(IE)]> </td> </tr> </table> <![endif]--> <!-- // END TEMPLATE --> </td> </tr> </table> </center> </body> </html>"; await _emailSender.SendMessage(juryInfo.Mail, subject, mailContent); } } }