public static JObject GetProfesorsForPS(string ps) { JObject jsonResponse = new JObject(); using (MyDNNDatabaseEntities context = new MyDNNDatabaseEntities()) { var rvp = context.RezultatVotProfesorProgramStudius.Where(rv => rv.ProgramStudiu.DenumireScurta == ps.ToUpper()); if (!rvp.Any()) { jsonResponse.Add("error", "Programul de studii nu a fost gasit."); return(jsonResponse); } List <Profesor> prfs = rvp.Select(rv => rv.Profesor).ToList(); int nrProfesoriDeVotat = GetProcentOf(prfs.Count); jsonResponse.Add("max", nrProfesoriDeVotat); List <string> optiuni = new List <string>(); foreach (Profesor profesor in prfs) { optiuni.Add("(Nr.crt_" + profesor.ID_Profesor + ") " + profesor.Nume + " " + profesor.Prenume); } jsonResponse.Add("optiuni", new JArray(optiuni)); } return(jsonResponse); }
public static string FetchMoodleData() { try { HttpClient client = new HttpClient(); client.BaseAddress = new Uri(ConfigurationManager.AppSettings.Get("moodlews_baseURL")); // Add an Accept header for JSON format. client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); string moodlewstoken = ConfigurationManager.AppSettings.Get("moodlews_token"); string moodlewsFunctionName = ConfigurationManager.AppSettings.Get("moodlews_function_get_questionnaire_responses"); string substrcmidnumber = ConfigurationManager.AppSettings.Get("moodlews_questionnaire_pa_substrcmidnumber"); string queryParams = "?wstoken=" + moodlewstoken + "&wsfunction=" + moodlewsFunctionName + "&moodlewsrestformat=json" + "&substrcmidnumber=" + substrcmidnumber; HttpResponseMessage httpResponseMessage = client.GetAsync(queryParams).Result; if (httpResponseMessage.IsSuccessStatusCode) { var jsonString = httpResponseMessage.Content.ReadAsStringAsync().Result; var json = JObject.Parse(jsonString); if (json["reports"] == null) { return(String.Empty); } using (MyDNNDatabaseEntities context = new MyDNNDatabaseEntities()) { foreach (var report in json["reports"]) { string cmidnumber = report["cmidnumber"].ToString(); string denumireScurtaPS = cmidnumber.Substring(cmidnumber.IndexOf(substrcmidnumber) + substrcmidnumber.Length); var listPS = context.ProgramStudius.Where(ps => ps.DenumireScurta.ToUpper().Equals(denumireScurtaPS.ToUpper())).ToList(); if (listPS.Count == 0) { // issue warning? continue; } ProgramStudiu programStudii = listPS[0]; if (report["closedate"] != null && !String.IsNullOrEmpty(report["closedate"].ToString())) { String dateStr = report["closedate"].ToString().Replace('-', '/'); programStudii.DataInchidereVot = DateTime.ParseExact(dateStr, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture); } int totalVotes = 0; foreach (var option in report["options"]) { string optionText = option["optiontext"].ToString(); if (optionText.IndexOf("(") == -1) { continue; } optionText = optionText.Substring(optionText.IndexOf("(") + 1); if (optionText.IndexOf("_") == -1) { continue; } optionText = optionText.Substring(optionText.IndexOf("_") + 1); if (optionText.IndexOf(")") == -1) { continue; } string nrcrtProfesorStr = optionText.Substring(0, optionText.IndexOf(")")); int nrcrtProfesor = 0; if (!int.TryParse(nrcrtProfesorStr, out nrcrtProfesor)) { // issue warning? continue; } var listProf = context.Profesors.Where(prf => prf.ID_Profesor.Equals(nrcrtProfesor)).ToList(); if (listProf.Count == 0) { // issue warning? continue; } Profesor profesor = listProf[0]; var listRez = programStudii.RezultatVotProfesorProgramStudius.Where(res => res.ID_Profesor.Equals(profesor.ID_Profesor)).ToList(); if (listRez.Count == 0) { // issue warning? continue; } var rez = listRez[0]; if (option["nbofvotes"] != null && !String.IsNullOrEmpty(option["nbofvotes"].ToString())) { rez.NumarVoturi = short.Parse(option["nbofvotes"].ToString()); totalVotes += rez.NumarVoturi; } } programStudii.NumarVotanti = totalVotes / GetProcentOf(report["options"].Count()); if (report["nbofstudents"] != null) { programStudii.NumarAbsolventi = int.Parse(report["nbofstudents"].ToString()); } } context.SaveChanges(); } return(jsonString); } else { return("Error status code : " + httpResponseMessage.StatusCode.ToString()); } } catch (Exception e) { return(e.Message); } }
public static string InsertData() { ObjectParameter responseMg = new ObjectParameter("responseMessage", Type.GetType("System.String")); ObjectParameter insertedId = new ObjectParameter("insertedID", Type.GetType("System.Int32")); string msg = String.Empty; DataSet dataSet = makeDataSet(); ReadData(dataSet); using (MyDNNDatabaseEntities context = new MyDNNDatabaseEntities()) { context.spClearDatabase(); foreach (DataRow tipCiclu in dataSet.Tables["TipCicluInvatamant"].Rows) { context.spAdaugaTipCicluInvatamant((string)tipCiclu["Denumire"], responseMg, insertedId); } foreach (DataRow ps in dataSet.Tables["ProgramStudiu"].Rows) { context.spAdaugaProgramStudiu( (string)ps["Facultate"], (int)ps["ID_TipCiclu"], (string)ps["DenumireScurta"], null, (int)ps["NumarAbsolventi"], (int)ps["NumarVotanti"], responseMg, insertedId ); } foreach (DataRow prof in dataSet.Tables["Profesor"].Rows) { context.spAdaugaProfesor( (string)prof["Nume"], (string)prof["Prenume"], (string)prof["Email"], (string)prof["GradDidactic"], (string)prof["FacultateServiciu"], (bool)prof["EligibilRemunerare"], responseMg, insertedId ); } foreach (DataRow rv in dataSet.Tables["RezultatVotProfesorProgramStudiu"].Rows) { context.spAdaugaRezultatVotProfesorProgramStudiu( (int)rv["ID_ProgramStudiu"], (int)rv["ID_Profesor"], (short)rv["NumarVoturi"], responseMg, insertedId ); } } dataSet.Dispose(); return(msg); }
static public string ExportVotingStatus() { ProcessInputData.FetchMoodleData(); using (MyDNNDatabaseEntities context = new MyDNNDatabaseEntities()) { List <Profesor> profesori = context.Profesors.ToList(); if (!File.Exists(GlobalValues.PATH_SOURCE_FILE)) { return(null); } string destFileName = "Profesor_Apreciat_Status_Voturi_Elearning.xlsx"; string destFilePath = Path.Combine(Path.GetDirectoryName(GlobalValues.PATH_SOURCE_FILE), destFileName); if (File.Exists(destFilePath)) { File.Delete(destFilePath); } File.Copy(GlobalValues.PATH_SOURCE_FILE, destFilePath); List <ProgramStudiu> programStudius = context.ProgramStudius.ToList(); using (XLWorkbook workbook = new XLWorkbook(destFilePath)) { List <IXLWorksheet> worksheets = workbook.Worksheets.Where(w => w.Visibility.Equals(XLWorksheetVisibility.Visible)).ToList(); if (worksheets == null || worksheets.Count <= 0) { return(null); } IXLWorksheet ws = worksheets[0]; var rows = ws.Rows().ToList(); int indexProfesor = 0; for (int rowIndex = 4; rowIndex < rows.Count; rowIndex++) { if (indexProfesor >= profesori.Count) { break; } var row = rows[rowIndex]; var cells = row.Cells().ToList(); var profesor = profesori[indexProfesor]; for (int columnindex = 6; columnindex < cells.Count; columnindex++) { var vot = profesor.RezultatVotProfesorProgramStudius.Where(v => v.ProgramStudiu.DenumireScurta == ws.Column(columnindex).FirstCell().GetValue <String>()).ToList(); if (vot.Count == 0) { continue; } ws.Column(columnindex).Cell(rowIndex + 1).Value = vot.First().NumarVoturi; ws.Column(columnindex).Cell(rowIndex + 1).Style.Font.Bold = true; ws.Column(columnindex).Cell(rowIndex + 1).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); } indexProfesor++; } // adauga numar votanti si numar absolventi si data inchiderii votului ws.Row(4).InsertRowsBelow(1); ws.Row(5).Cell(2).Value = "Votarea Terminata"; ws.Row(5).Cell(2).Style = ws.Row(4).Cell(2).Style; var range = ws.Range(ws.Row(5).Cell(2), ws.Row(5).Cell(5)).Merge(); range.Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); int cellsCount = rows[0].Cells().Count(); for (int columnindex = 6; columnindex < cellsCount; columnindex++) { if (String.IsNullOrEmpty(ws.Column(columnindex).FirstCell().GetValue <String>())) { break; } var programList = programStudius.Where(p => p.DenumireScurta.Equals(ws.Column(columnindex).FirstCell().GetValue <String>())).ToList(); if (programList == null || programList.Count == 0) { continue; } var ps = programList[0]; ws.Column(columnindex).Cell(3).Value = ps.NumarAbsolventi; ws.Column(columnindex).Cell(4).Value = ps.NumarVotanti; if (ps.DataInchidereVot.HasValue) { if (ps.DataInchidereVot.Value <= DateTime.Now && ps.DataInchidereVot.Value.Year == DateTime.Now.Year) { ws.Row(5).Cell(columnindex).Value = "Y"; } else if (ps.DataInchidereVot.Value <= DateTime.Now && ps.DataInchidereVot.Value.Year != DateTime.Now.Year) { ws.Row(5).Cell(columnindex).Value = "X"; } else if (ps.DataInchidereVot.Value > DateTime.Now) { ws.Row(5).Cell(columnindex).Value = "N"; } } else { ws.Row(5).Cell(columnindex).Value = "N"; } } workbook.Save(); } return(destFilePath); } }
public static string ExportFinalResults() { ProcessInputData.FetchMoodleData(); using (MyDNNDatabaseEntities context = new MyDNNDatabaseEntities()) { List <Profesor> profesori = context.Profesors.ToList(); Dictionary <string, List <int> > remuneratiFaza1 = new Dictionary <string, List <int> >(); Dictionary <string, List <int> > remuneratiFaza2 = new Dictionary <string, List <int> >(); Dictionary <string, Dictionary <Profesor, int> > facultateVoturiTitulariLicentaProfesori = new Dictionary <string, Dictionary <Profesor, int> >(); Dictionary <string, Dictionary <Profesor, float> > facultateVoturiTitulariLicentaMasterProfesori = new Dictionary <string, Dictionary <Profesor, float> >(); if (!File.Exists(GlobalValues.PATH_SOURCE_FILE)) { return(null); } string destFileName = "Profesor_Apreciat_Rezultate_Finale.xlsx"; string destFilePath = Path.Combine(Path.GetDirectoryName(GlobalValues.PATH_SOURCE_FILE), destFileName); if (File.Exists(destFilePath)) { File.Delete(destFilePath); } File.Copy(GlobalValues.PATH_SOURCE_FILE, destFilePath); using (XLWorkbook workbook = new XLWorkbook(destFilePath)) { var worksheets = workbook.Worksheets.Where(w => w.Visibility.Equals(XLWorksheetVisibility.Visible)).ToList(); if (worksheets == null || worksheets.Count <= 0) { return(null); } var ws = worksheets[0]; ws.Column(5).InsertColumnsAfter(1); ws.Column(6).FirstCell().Value = "VOTURI LICENTA"; ws.Column(6).Width = 20; ws.Column(6).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Column(6).InsertColumnsAfter(1); ws.Column(7).FirstCell().Value = "VOTURI MASTER"; ws.Column(7).Width = 20; ws.Column(7).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Column(7).InsertColumnsAfter(1); ws.Column(8).FirstCell().Value = "PROCENTAJ"; ws.Column(8).Width = 15; ws.Column(8).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Column(8).InsertColumnsAfter(1); ws.Column(9).FirstCell().Value = "REMUNERAT FAZA 1"; ws.Column(9).Width = 25; ws.Column(9).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Column(9).InsertColumnsAfter(1); ws.Column(10).FirstCell().Value = "REMUNERAT FAZA 2"; ws.Column(10).Width = 25; ws.Column(10).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); int columnCount = ws.ColumnCount(); int resultIndex = 0; var rows = ws.Rows().ToList(); if (rows.Count == 0) { return(null); } int nrVoturiLicenta = 0; int nrVoturiMaster = 0; int nrVotantiProgrameDeStudii = 0; int totalVoturi = 0; for (int rowIndex = 4; rowIndex < rows.Count; rowIndex++) { if (resultIndex >= profesori.Count) { break; } nrVoturiLicenta = 0; nrVoturiMaster = 0; var row = rows[rowIndex]; var cells = row.Cells().ToList(); var currResult = profesori[resultIndex]; for (int columnindex = 11; columnindex < cells.Count; columnindex++) { string denumirePS = ws.Column(columnindex).FirstCell().Value.ToString(); var vot = currResult.RezultatVotProfesorProgramStudius.Where(v => v.ProgramStudiu.DenumireScurta == denumirePS).ToList(); if (vot.Count == 0) { continue; } ws.Column(columnindex).Cell(rowIndex + 1).Value = vot.First().NumarVoturi; ws.Column(columnindex).Cell(rowIndex + 1).Style.Font.Bold = true; ws.Column(columnindex).Cell(rowIndex + 1).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); if (vot.First().ProgramStudiu.ID_TipCiclu == 1) { nrVoturiLicenta += vot.First().NumarVoturi; } else { nrVoturiMaster += vot.First().NumarVoturi; } } ws.Column(6).Cell(rowIndex + 1).Value = nrVoturiLicenta; ws.Column(6).Cell(rowIndex + 1).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Column(7).Cell(rowIndex + 1).Value = nrVoturiMaster; ws.Column(7).Cell(rowIndex + 1).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); totalVoturi = nrVoturiLicenta + nrVoturiMaster; nrVotantiProgrameDeStudii = currResult.RezultatVotProfesorProgramStudius.Select(r => r.ProgramStudiu).Select(ps => ps.NumarVotanti).Sum(); float raportNrVoturiNrVotanti = (totalVoturi * 1.0f) / nrVotantiProgrameDeStudii; if (totalVoturi != 0) { ws.Column(8).Cell(rowIndex + 1).Value = raportNrVoturiNrVotanti.ToString(); } else { ws.Column(8).Cell(rowIndex + 1).Value = "0"; } ws.Column(8).Cell(rowIndex + 1).Style.NumberFormat.Format = "0.000%"; ws.Column(8).Cell(rowIndex + 1).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); resultIndex++; if (!facultateVoturiTitulariLicentaProfesori.ContainsKey(currResult.FacultateServiciu)) { facultateVoturiTitulariLicentaProfesori.Add(currResult.FacultateServiciu, new Dictionary <Profesor, int>()); } if (!facultateVoturiTitulariLicentaMasterProfesori.ContainsKey(currResult.FacultateServiciu)) { facultateVoturiTitulariLicentaMasterProfesori.Add(currResult.FacultateServiciu, new Dictionary <Profesor, float>()); } if (currResult.EligibilRemunerare == true) { facultateVoturiTitulariLicentaProfesori[currResult.FacultateServiciu].Add(currResult, nrVoturiLicenta); facultateVoturiTitulariLicentaMasterProfesori[currResult.FacultateServiciu].Add(currResult, raportNrVoturiNrVotanti); } } foreach (var entry in facultateVoturiTitulariLicentaProfesori) { var eligibiliDict = entry.Value; var eligibiliOrderedList = eligibiliDict.OrderByDescending(el => el.Value).ToList(); int nrSelected = ProcessInputData.GetProcentOf(eligibiliOrderedList.Count); remuneratiFaza1.Add(entry.Key, eligibiliOrderedList.Take(nrSelected).Select(e => e.Key.ID_Profesor).ToList()); } foreach (var entry in facultateVoturiTitulariLicentaMasterProfesori) { var eligibiliDict = entry.Value; var eligibiliOrderedList = eligibiliDict.OrderByDescending(el => el.Value).ToList(); remuneratiFaza2.Add(entry.Key, new List <int>()); int nrSelected = ProcessInputData.GetProcentOf(eligibiliOrderedList.Count); foreach (var it in eligibiliOrderedList) { if (remuneratiFaza2[it.Key.FacultateServiciu].Count == nrSelected) { break; } if (!remuneratiFaza1[it.Key.FacultateServiciu].Contains(it.Key.ID_Profesor)) { remuneratiFaza2[it.Key.FacultateServiciu].Add(it.Key.ID_Profesor); } } } resultIndex = 0; for (int rowNr = 5; rowNr <= rows.Count; rowNr++) { if (resultIndex >= profesori.Count) { break; } if (remuneratiFaza1[profesori[resultIndex].FacultateServiciu].Contains(profesori[resultIndex].ID_Profesor)) { ws.Column(9).Cell(rowNr).Value = "DA"; ws.Column(9).Cell(rowNr).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); } if (remuneratiFaza2[profesori[resultIndex].FacultateServiciu].Contains(profesori[resultIndex].ID_Profesor)) { ws.Column(10).Cell(rowNr).Value = "DA"; ws.Column(10).Cell(rowNr).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); } resultIndex++; } // adauga numar votanti si numar absolventi si data inchiderii votului ws.Row(4).InsertRowsBelow(1); ws.Row(5).Cell(2).Value = "Votarea Terminata"; ws.Row(5).Cell(2).Style = ws.Row(4).Cell(2).Style; var range = ws.Range(ws.Row(5).Cell(2), ws.Row(5).Cell(5)).Merge(); range.Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); int cellsCount = rows[0].Cells().Count(); for (int columnindex = 11; columnindex < cellsCount; columnindex++) { string denumirePS = ws.Column(columnindex).FirstCell().GetValue <String>(); if (String.IsNullOrEmpty(denumirePS)) { break; } var programList = context.ProgramStudius.Where(p => p.DenumireScurta.Equals(denumirePS)).ToList(); if (programList == null || programList.Count == 0) { continue; } var ps = programList[0]; ws.Column(columnindex).Cell(3).Value = ps.NumarAbsolventi; ws.Column(columnindex).Cell(4).Value = ps.NumarVotanti; if (ps.DataInchidereVot.HasValue) { if (ps.DataInchidereVot.Value <= DateTime.Now && ps.DataInchidereVot.Value.Year == DateTime.Now.Year) { ws.Row(5).Cell(columnindex).Value = "Y"; } else if (ps.DataInchidereVot.Value <= DateTime.Now && ps.DataInchidereVot.Value.Year != DateTime.Now.Year) { ws.Row(5).Cell(columnindex).Value = "X"; } else if (ps.DataInchidereVot.Value > DateTime.Now) { ws.Row(5).Cell(columnindex).Value = "N"; } } else { ws.Row(5).Cell(columnindex).Value = "N"; } } workbook.Save(); } return(destFilePath); } }