/// <summary> /// Crea la lista de los alumnos que deben asistir a /// clases. /// </summary> /// <param name="schoolClassIds"> /// array de ids de las clases. /// </param> /// <returns> /// Retorna una lista de objetos SchoolClassStudent que pueden /// contener objetos Absence en caso de que no sea la primera /// vez que el profesor hace la peticion /// </returns> public async Task <List <SchoolClassStudent> > Get(int[] schoolClassIds) { List <SchoolClassStudent> callList = new List <SchoolClassStudent>(); foreach (int id in schoolClassIds) { //Alumnos que deben ir a cada clase List <StudentEntity> studentEntities = await _studentRepository .GetByCurrentSchoolClass(id); foreach (StudentEntity s in studentEntities) { //Para cada alumno de la lista, se mira si ya ha sido marcado como //ausente de la misma clase, en tal caso se instancia un objeto Absence dentro del objeto //SchoolClassStudent para que el profesor no tenga que volver a marcar //a los ausentes cuando recibe la lista AbsenceEntity absenceEntity = await _absenceRepository .GetByStudentAndSchoolClass(s.Id, id); Absence absence = AbsenceMapper.Map(absenceEntity); callList.Add(new SchoolClassStudent { SchoolClassId = id, Absence = absence, Student = StudentMapper.Map(s) }); } } ; return(callList); }
//[ValidateAntiForgeryToken] ///<summary> /// Retrieves form for the given absence selected /// </summary> public ActionResult UpdateAbsenceEntry(IAbsenceDO iAbsence, int pointBankID) { ActionResult oResponse = null; var userPO = (IUserPO)Session["UserModel"]; if (userPO.Email != null && userPO.RoleID_FK >= (int)RoleEnum.Administrator && userPO.RoleID_FK <= (int)RoleEnum.Team_Lead) { var absenceVM = new AbsenceViewModel(); // Retrieve selected absence var absenceDO = PointsDataAccess.GetAbsenceByID(pointBankID); ViewBag.Name = "Modify Employee Absence"; // Maps absence DO to PO absenceVM.Absence = AbsenceMapper.MapAbsenceDOtoPO(absenceDO); oResponse = View(absenceVM); } else { // User doesn't have priveleges redirect home oResponse = RedirectToAction("Index", "Home"); } return(oResponse); }
private void AssociateAdminValues(TeamViewModel viewAllTeamsVM, Tuple <string, decimal> bestStandingTeam, Tuple <string, decimal> bottomStandingTeam, List <IAbsenceDO> absenceDOs, List <Tuple <string, decimal> > teamRanker, IUserPO userPO) { // Assign values to model for widgets viewAllTeamsVM.TopTeam.Team.Name = bestStandingTeam.Item1; viewAllTeamsVM.TopTeam.Absence.RunningTotal = bestStandingTeam.Item2; viewAllTeamsVM.BottomTeam.Team.Name = bottomStandingTeam.Item1; viewAllTeamsVM.BottomTeam.Absence.RunningTotal = bottomStandingTeam.Item2; // Map absences from DO to PO for displaying to the user viewAllTeamsVM.ListOfTeamAbsences = AbsenceMapper.MapListOfDOsToListOfPOs(absenceDOs); foreach (var absence in absenceDOs) { viewAllTeamsVM.Absences.Add(new SelectListItem() { Text = absence.Name, Value = absence.Name }); } foreach (var item in teamRanker) { viewAllTeamsVM.TeamRanker.Team.Name = item.Item1; viewAllTeamsVM.TeamRanker.Absence.Point = item.Item2; } viewAllTeamsVM.User.RoleID_FK = userPO.RoleID_FK; viewAllTeamsVM.User.Email = userPO.Email; }
public IEnumerable <JiraAbsence> GetAbsences(Dictionary <string, string> userNameInitialsDictionary) { var result = new List <JiraAbsence>(); ConcurrentBag <dynamic> issuesJsons = new ConcurrentBag <dynamic>(); var items = GetAbsencePage(0); PagingJob issuesPagingJob = new PagingJob(items.issues.Count, items.total.Value); issuesJsons.Add(items); if (issuesPagingJob.IsPagingNecessary) { Parallel.ForEach(issuesPagingJob.GetPageStarts(), pageStart => { issuesJsons.Add(GetAbsencePage(pageStart)); }); } foreach (var item in issuesJsons) { foreach (var issue in item.issues) { result.Add(AbsenceMapper.MapAbsence(issue, userNameInitialsDictionary, _jiraBaseUrl)); } } return(result); }
///<summary> /// Sends the form to the database to be modified for an absence /// </summary> public ActionResult UpdateAbsenceEntry(AbsenceViewModel iViewModel, int userID) { ActionResult oResponse = null; var userPO = (IUserPO)Session["UserModel"]; // Ensure user has priveleges if (userPO.Email != null && userPO.RoleID_FK >= (int)RoleEnum.Administrator && userPO.RoleID_FK <= (int)RoleEnum.Team_Lead) { if (ModelState.IsValid) { try { // Map absence from PO to DO IAbsenceDO lAbsenceForm = AbsenceMapper.MapAbsencePOtoDO(iViewModel.Absence); // Passes form to data access to update the database PointsDataAccess.UpdateAbsenceInformation(lAbsenceForm, userPO.UserID); // Determine redirect based off role switch (userPO.RoleID_FK) { case 1: oResponse = RedirectToAction("ViewAllAbsenceEntries", "Maint"); break; case 2: oResponse = RedirectToAction("ViewAllAbsencesForSMTeam", "Maint"); break; case 3: oResponse = RedirectToAction("ViewAbsencesByTeamID", "Maint"); break; default: oResponse = RedirectToAction("Index", "Home"); break; } } catch (Exception ex) { ErrorLogger.LogError(ex, "UpdateAbsenceEntry", "Maint"); iViewModel.ErrorMessage = "Something went wrong updating the absence entry. Please try again."; oResponse = View(iViewModel); } } else { oResponse = View(iViewModel); } } else { oResponse = RedirectToAction("Index", "Home"); } return(oResponse); }
/// <summary> /// Recibe del repositorio la lista de entidades ausencias /// del alumno con el id introducido por parámetro /// y la transforma en lista de objectos ausencias /// </summary> /// <param name="studentId"> /// El id del alumno /// </param> /// <returns> /// Retorna la lista de ausencias /// </returns> public async Task <List <Absence> > GetByStudent(int studentId) { List <AbsenceEntity> studentEntities = await _absenceRepository .GetByStudent(studentId); List <Absence> absences = studentEntities .Select(s => AbsenceMapper.MapIncludingSchedule(s)).ToList(); return(absences); }
public ActionResult LeadDashboard() { // Emp Name-> Points-> Status // if ((UserPO)Session["UserModel"] != null) // { var loggedUSer = (IUserPO)Session["UserModel"]; List <DashboardViewModel> emps = AbsenceMapper.MapListOfPOsToListOfVMs(AbsenceMapper.MapListOfBOsToListOfPOs(AbsenceBusinessLogic.DetermineEmployeeAbsenceStatus(AbsenceMapper.MapListOfDOsToListOfBOs(PointsDataAccess.ViewAbsencesByUserID(loggedUSer.UserID))))); //TODO: Implement AutoMapper Mapper.Map<List<IAbsenceBO>, List<DashboardViewModel>>(AbsenceBusinessLogic.DetermineEmployeeAbsenceStatus(Mapper.Map<List<IAbsenceDO>, List<IAbsenceBO>>(PointsDataAccess.ViewAbsencesByUserID(loggedUSer.UserID)))); // } return(View(emps)); }
private void InitializeViewData(AbsenceViewModel selectedTeamAbsences, UserPO userPO, List <IAbsenceDO> absences) { var smName = new StringBuilder(selectedTeamAbsences.User.FirstName, 25); ViewBag.Name = smName.Append(" " + selectedTeamAbsences.User.LastName); // Maps list of absences from DO to PO foreach (IAbsenceDO absence in absences) { selectedTeamAbsences.Absence = AbsenceMapper.MapAbsenceDOtoPO(absence); } }
private void MapAdminObjects(AbsenceViewModel selectedTeamAbsences, List <ITeamDO> allTeams, List <IAbsenceDO> absences) { // Map values to correct properties for view foreach (IAbsenceDO absence in absences) { selectedTeamAbsences.Absence = AbsenceMapper.MapAbsenceDOtoPO(absence); selectedTeamAbsences.ListOfPos.Add(selectedTeamAbsences.Absence); } foreach (ITeamDO team in allTeams) { selectedTeamAbsences.Team = TeamMapper.MapTeamDOtoPO(team); } }
// TODO: Rename and refactor to handle all role types private void AssociateAdminValues(AbsenceViewModel viewAllAbsenceEntries, Tuple <string, decimal> bestStandingTeam, Tuple <string, decimal> bottomStandingTeam, List <IAbsenceDO> allAbsences) { // Assign values to model for widgets viewAllAbsenceEntries.TopTeam.Team.Name = bestStandingTeam.Item1; viewAllAbsenceEntries.TopTeam.Absence.RunningTotal = bestStandingTeam.Item2; viewAllAbsenceEntries.BottomTeam.Team.Name = bottomStandingTeam.Item1; viewAllAbsenceEntries.BottomTeam.Absence.RunningTotal = bottomStandingTeam.Item2; // Map absences from DO to PO for displaying to the user viewAllAbsenceEntries.ListOfPos = AbsenceMapper.MapListOfDOsToListOfPOs(allAbsences); //foreach (var absence in allAbsences) //{ // viewAllAbsenceEntries.Absences.Add(new SelectListItem() { Text = absence.Name, Value = absence.Name }); //} }
///<summary> /// Sends the absence form to the database to be added /// </summary> /// <returns></returns> public ActionResult AddAbsenceEntry(AbsenceViewModel iViewModel) { ActionResult oResponse = null; var userPO = (IUserPO)Session["UserModel"]; // User is authenticated(Admin, Service Manager or Team Lead) if (userPO.Email != null && userPO.RoleID_FK < (int)RoleEnum.Service_Desk_Employee && userPO.RoleID_FK >= (int)RoleEnum.Administrator) { if (ModelState.IsValid) { try { var absenceTypes = _AbsenceDataAccess.GetAllAbsenceTypes(); var absenceTypePOs = AbsenceMapper.MapListOfDOsToListOfPOs(absenceTypes); // Maps absence PO to DO during creation IAbsenceDO lAbsenceForm = AbsenceMapper.MapAbsencePOtoDO(iViewModel.Absence); var absenceType = absenceTypePOs.Where(at => at.AbsenceTypeID == iViewModel.Absence.AbsenceTypeID); // Passes form to data access to add event to db PointsDataAccess.AddAbsence(lAbsenceForm, userPO.UserID); oResponse = RedirectToAction("ViewAllAbsence", "Maint"); } catch (Exception ex) { ErrorLogger.LogError(ex, "AddAbsenceEntry", "Maint"); iViewModel.ErrorMessage = "Something went wrong when creating the absence to the system. Please try again."; } } else { oResponse = View(iViewModel); } } else { // User doesn't have privileges to create an absense entry, redirect to home. oResponse = RedirectToAction("Index", "Home"); } return(oResponse); }
//[ValidateAntiForgeryToken] ///<summary> /// Retrieves form for creating a new absence entry /// </summary> public ActionResult AddAbsenceEntry() { ActionResult oResponse = null; var userPO = (IUserPO)Session["UserModel"]; if (userPO.Email != null && userPO.RoleID_FK == (int)RoleEnum.Administrator) { var absenceVM = new AbsenceViewModel(); var absenceTypes = _AbsenceDataAccess.GetAllAbsenceTypes(); var absencePOs = AbsenceMapper.MapListOfDOsToListOfPOs(absenceTypes); var users = _UserDataAccess.GetAllUsers(); var userPOs = UserMapper.MapListOfDOsToListOfPOs(users); absenceVM.Users = userPOs.ConvertAll(a => { return(new SelectListItem() { Text = a.UserID.ToString(), Value = a.FirstName + " " + a.LastName, Selected = false }); }); absenceVM.AbsenceTypes = absencePOs.ConvertAll(a => { return(new SelectListItem() { Text = a.AbsenceTypeID.ToString(), Value = a.Name, Selected = false }); }); oResponse = View(absenceVM); } else { // User doesn't have access to create, redirect home oResponse = RedirectToAction("Index", "Home"); } return(oResponse); }
//[ValidateAntiForgeryToken] ///<summary> /// Views all absences by for a given team(TL, SM, Admin) /// </summary> /// <returns></returns> public ActionResult ViewAbsencesByTeamID(int teamID) { ActionResult oResponse = null; var selectedTeamAbsences = new AbsenceViewModel(); var userPO = (IUserPO)Session["UserModel"]; if (userPO.Email != null && userPO.RoleID_FK <= (int)RoleEnum.Team_Lead && userPO.RoleID_FK >= (int)RoleEnum.Administrator) { if (ModelState.IsValid) { try { // Stores list of absences by TeamID var absences = PointsDataAccess.GetAbsencesByTeamID(teamID); var teamName = _TeamDataAccess.GetTeamNameByID(teamID); // Retrieve lists for LINQ queries var allAbsences = PointsDataAccess.ViewAllAbsences(); var allTeams = _TeamDataAccess.GetAllTeams(); var allUsers = _UserDataAccess.GetAllUsers(); var topMemeberBOs = UserMapper.MapListOfDOsToListOfBOs(allUsers); // LINQ Queries var bestStandingTeam = _TeamBusinessLogic.QueryBestStandingTeam(TeamMapper.MapListOfDOsToListOfBOs(allTeams), allAbsences); var bottomStandingTeam = _TeamBusinessLogic.QueryWorstStandingTeam(TeamMapper.MapListOfDOsToListOfBOs(allTeams), allAbsences); var topEmployee = _TeamBusinessLogic.QueryBestStandingEmployee(allTeams, allAbsences, allUsers); var teamRanker = _TeamBusinessLogic.QueryTeamRanker(TeamMapper.MapListOfDOsToListOfBOs(allTeams), allAbsences); MapAdminObjects(selectedTeamAbsences, allTeams, absences); switch (userPO.RoleID_FK) { // Admin case 1: selectedTeamAbsences.ListOfPos = AbsenceMapper.MapListOfDOsToListOfPOs(absences); AssociateAdminValues(selectedTeamAbsences, teamRanker, teamName, bestStandingTeam, bottomStandingTeam, topEmployee); break; // Service Manager case 2: var teamAbsences = AbsenceMapper.MapListOfDOsToListOfPOs(absences); var smTeams = _TeamDataAccess.GetAllSMTeamsByUserID(userPO.UserID); selectedTeamAbsences.SMTeams = TeamMapper.MapListOfDOsToListOfPOs(smTeams); AssociateAdminValues(selectedTeamAbsences, teamRanker, teamName, bestStandingTeam, bottomStandingTeam, topEmployee); //selectedTeamAbsences.ListOfPos = teamAbsences; //selectedTeamAbsences.TopTeam.Team.Name = bestStandingTeam.Item1; //selectedTeamAbsences.TopTeam.Absence.Point = bestStandingTeam.Item2; //selectedTeamAbsences.BottomTeam.Team.Name = bottomStandingTeam.Item1; //selectedTeamAbsences.BottomTeam.Absence.Point = bottomStandingTeam.Item2; //selectedTeamAbsences.TopEmployee.Name = topEmployee.Item1; //selectedTeamAbsences.TopEmployee.Absence.Point = topEmployee.Item2; //MapServiceManagerObjects(selectedTeamAbsences, allTeams, absences); //AssociateServiceManagerObjects(selectedTeamAbsences, topEmployee); oResponse = View(selectedTeamAbsences); break; // Team Lead case 3: var tlAbsences = AbsenceMapper.MapListOfDOsToListOfPOs(absences); selectedTeamAbsences.ListOfPos = tlAbsences; AssociateAdminValues(selectedTeamAbsences, teamRanker, teamName, bestStandingTeam, bottomStandingTeam, topEmployee); //selectedTeamAbsences.TopTeam.Team.Name = bestStandingTeam.Item1; //selectedTeamAbsences.TopTeam.Absence.Point = bestStandingTeam.Item2; //selectedTeamAbsences.BottomTeam.Team.Name = bottomStandingTeam.Item1; //selectedTeamAbsences.BottomTeam.Absence.Point = bottomStandingTeam.Item2; //selectedTeamAbsences.TopEmployee.Name = topEmployee.Item1; //selectedTeamAbsences.TopEmployee.Absence.Point = topEmployee.Item2; oResponse = View(selectedTeamAbsences); break; default: break; } oResponse = View(selectedTeamAbsences); } catch (Exception ex) { ErrorLogger.LogError(ex, "ViewAbsencesByTeamID", "Maint"); selectedTeamAbsences.ErrorMessage = "Something went wrong retrieving the list of absences. Please try again."; oResponse = View(selectedTeamAbsences); } } else { oResponse = View(selectedTeamAbsences); } } return(oResponse); }
//[ValidateAntiForgeryToken] ///<summary> /// Views all teams(admin, service manager and team leads) /// </summary> public ActionResult ViewAllTeams() { ActionResult oResponse = null; var viewAllTeamsVM = new TeamViewModel(); var userPO = (IUserPO)Session["UserModel"]; // Ensures authenticated if (userPO.Email != null && userPO.RoleID_FK >= (int)RoleEnum.Administrator && (int)RoleEnum.Team_Lead <= 3) { try { var allTeams = _TeamDataAccess.GetAllTeams(); var smAllTeams = _TeamDataAccess.GetAllSMTeamsByUserID(userPO.UserID); var smTeams = _TeamDataAccess.GetAllSMTeams(); var allUsers = _UserDataAccess.GetAllUsers(); var allAbsences = PointsDataAccess.ViewAllAbsences(); switch (userPO.RoleID_FK) { case 1: // TODO: Add widget data to view model/view // Maps from data objects to presentation objects. viewAllTeamsVM.ListOfPos = TeamMapper.MapListOfDOsToListOfPOs(allTeams); var bestStandingTeam = _TeamBusinessLogic.QueryBestStandingTeam(TeamMapper.MapListOfDOsToListOfBOs(allTeams), allAbsences); var bottomStandingTeam = _TeamBusinessLogic.QueryWorstStandingTeam(TeamMapper.MapListOfDOsToListOfBOs(allTeams), allAbsences); var teamRanker = _TeamBusinessLogic.QueryTeamRanker(TeamMapper.MapListOfDOsToListOfBOs(allTeams), allAbsences); AssociateAdminValues(viewAllTeamsVM, bestStandingTeam, bottomStandingTeam, allAbsences, teamRanker, userPO); oResponse = View(viewAllTeamsVM); break; case 2: // TODO: Add Widget data to view model/view // Maps from data objects to presentation objects. viewAllTeamsVM.ListOfPos = TeamMapper.MapListOfDOsToListOfPOs(smAllTeams); //var teamAbsences = allAbsences.Where(a => a.); Need to retrieve absences by Team // TODO: list of service manager team absences viewAllTeamsVM.ListOfTeamAbsences = AbsenceMapper.MapListOfDOsToListOfPOs(allAbsences); var topEmployee = _TeamBusinessLogic.QueryBestStandingTeamMember(smTeams, allAbsences, allUsers, userPO.RoleID_FK); oResponse = View(viewAllTeamsVM); break; case 3: // TODO: Finish DA call for Team Lead lolololol var getAllTeams = _TeamDataAccess.GetAllTeamsByUserID(userPO.UserID); viewAllTeamsVM.ListOfPos = TeamMapper.MapListOfDOsToListOfPOs(getAllTeams); var topTeamMember = _TeamBusinessLogic.QueryBestStandingTeamMember(smTeams, allAbsences, allUsers, userPO.RoleID_FK); oResponse = View(viewAllTeamsVM); break; default: oResponse = View("Index", "Home"); break; } } catch (Exception ex) { ErrorLogger.LogError(ex, "ViewAllTeams", "Maint"); viewAllTeamsVM.ErrorMessage = "There was an issure retrieving the view all teams. Please try again. If the problem persists contact your IT department."; } } else { oResponse = RedirectToAction("Index", "Home"); } return(oResponse); }