public void AddGroupClassroom(GroupClassroom pGroupClassroom) { gvDatabase.GroupClassrooms.Add(pGroupClassroom); gvDatabase.SaveChanges(); }
public ActionResult UploadCsvFile() { gvDatabase.Configuration.AutoDetectChangesEnabled = false; gvDatabase.Configuration.ValidateOnSaveEnabled = false; List <GroupAssignmentCSVViewModel> vGroupsList = new List<GroupAssignmentCSVViewModel>(); IEnumerable<DataCSV> vGroups ; int vPeriod = int.Parse(Request.Cookies["Periodo"].Value); var vAttachedFile = System.Web.HttpContext.Current.Request.Files["CsvDoc"]; if (vAttachedFile == null || vAttachedFile.ContentLength <= 0) return Json(null); var vCsvReader = new StreamReader(vAttachedFile.InputStream); using (vCsvReader) { var vReader = new CsvReader(vCsvReader); vReader.Configuration.Encoding = Encoding.UTF8; vGroups = vReader.GetRecords<DataCSV>().ToList(); int vGroupNumber = 0; foreach (DataCSV group in vGroups) { String vState = "",vDetails = ""; // Variables to show the assignation process // Validate that GroupNumber field is a number try {vGroupNumber = Convert.ToInt32(group.Grupo);} catch { } // Validations of each field in the file int vIDGroup = getIDGroup(vPeriod, group.Sede, vGroupNumber, group.Nombre); int vIdProfessor = getIDProfessor(group.Profesor); int vIdSchedule = getIDSchedule(group.Dia, group.HoraInicio, group.HoraFin); int vIdClassroom = getIDClassroom(group.Aula, group.Sede); int vIdBlock = getIDBlock(vIDGroup); int vValidateProfessorSchedule = getProfessorValidationSchedule(vPeriod, vIdProfessor, vIdSchedule); int vValidateClassroomSchedule = getClassroomValidationSchedule(vPeriod, vIdClassroom, vIdSchedule); // If there some error in validation, writes on vDetails a little about the error ocurred. if (vIDGroup == 0) { vDetails = " - Informacion de Grupo incorrecta";} if (vIdProfessor == 0) { vDetails += " - Profesor no existe"; } if (vIdSchedule == 0) { vDetails += " - Horario Inválido";} if (vValidateProfessorSchedule == 0){ vDetails += " - Conflicto de Horario del Profesor";} if (vIdClassroom == 0) { vDetails += " - Aula Incorrecta";} if (vValidateClassroomSchedule == 0) { vDetails += " - Conflicto de Horario del Aula";} if (vIDGroup != 0) // Group is ok { // Creates GroupClassroom objet to save it in the database GroupClassroom vGroupClassroom = new GroupClassroom(); vGroupClassroom.ScheduleID = vIdSchedule; vGroupClassroom.GroupID = vIDGroup; vGroupClassroom.ClassroomID = vIdClassroom; if (vIdSchedule != 0 && vIdClassroom != 0 && vValidateClassroomSchedule != 0) // There is a classroom and schedule to assign { // Validates Schedule COnflict in Block -> if (vValidateBlockSchedule != 0) vState = "Incompleto"; AddGroupClassroom(vGroupClassroom); if (vIdProfessor != 0 && (vValidateProfessorSchedule != 0)) //Professor ok { EditGroup(vIDGroup, vIdProfessor); vState = "Completo"; } } else { vState = "Error"; } } else { vState = "Error"; vDetails = "Grupo no existe - Compruebe que no ha modificado la información por defecto de la plantilla"; } // Creates the Object of ViewModel to show in the view. GroupAssignmentCSVViewModel vGA = new GroupAssignmentCSVViewModel(); vGA.Grupo = Convert.ToInt32(group.Grupo); vGA.Profesor = group.Profesor; vGA.Curso = group.Nombre; vGA.Dia = group.Dia; vGA.HInicio = group.HoraInicio; vGA.HFinal = group.HoraFin; vGA.EstadoAsignacion = vState; vGA.Aula = group.Aula; vGA.DetalleAsignacion = vDetails; vGroupsList.Add(vGA); } } return Json(vGroupsList, JsonRequestBehavior.AllowGet); }
public ActionResult Horarios(NewScheduleViewModel pNewSchedule) { //***************************************************************************************************** //******************************* Se obtienen los datos del formulario ******************************** //***************************************************************************************************** int vGroupID = Convert.ToInt32(pNewSchedule.Group); // 1 Find the group in the database Group vGroup = db.Groups.Find(vGroupID); // 2 Remove GroupClassroom fields asociated with the Group removeGroupClassroomByGroupID(vGroupID); // 3 new GroupClassrooms asociated with Group //Get the list of schedules and classrooms from the View List<NewSchedule> vNewSchedule = pNewSchedule.NewSchedule; bool vIsValidateClassroom = true;// = isInternScheduleValid(vNewSchedule); foreach (NewSchedule tempSchedule in vNewSchedule) { Schedule vTempSchedule = existSchedule(tempSchedule.Day, tempSchedule.StartHour, tempSchedule.EndHour); int vClassroomID = Convert.ToInt32(tempSchedule.Classroom); if (isValidScheduleClassroom(vTempSchedule, vClassroomID, vGroupID)) { GroupClassroom vNewGroupClassroom = new GroupClassroom(); vNewGroupClassroom.ClassroomID = Convert.ToInt32(tempSchedule.Classroom); vNewGroupClassroom.ScheduleID = vTempSchedule.ID; vNewGroupClassroom.GroupID = vGroup.ID; vGroup.GroupsClassroom.Add(vNewGroupClassroom); } else { vIsValidateClassroom = false; } } if (vIsValidateClassroom) { if (vGroup.ProfessorID != null) { var vProfessorID = (int)vGroup.ProfessorID; var vPeriod = Request.Cookies["Periodo"].Value; var vPeriodID = db.Periods.Find(int.Parse(vPeriod)).ID; ScheduleHelper dbHelper = new ScheduleHelper(); string validate = dbHelper.validationsEditGroup(vProfessorID, vGroupID, vPeriodID); if (validate.Equals("true")) { db.SaveChanges(); TempData[TempDataMessageKeySuccess] = "Cambios guardados satisfactoriamente"; return RedirectToAction("Index"); } // Exist problems in profesor schedule, so the assign is cancelled and the user recive the information of the problem else if (validate.Equals("falseIsGroupShock")) { TempData[TempDataMessageKeyError] = "Existe choque de horario con el profesor asignado al grupo, no se realizaron los cambios"; return RedirectToAction("Index"); } else if (validate.Equals("falseIsProjectShock")) { TempData[TempDataMessageKeyError] = "Existe choque de horario con el profesor asignado al grupo, no se realizaron los cambios"; return RedirectToAction("Index"); } else if (validate.Equals("falseIsCommissionShock")) { TempData[TempDataMessageKeyError] = "Existe choque de horario con el profesor asignado al grupo, no se realizaron los cambios"; return RedirectToAction("Index"); } } else { db.SaveChanges(); TempData[TempDataMessageKeySuccess] = "Cambios guardados satisfactoriamente"; return RedirectToAction("Index"); } } else { TempData[TempDataMessageKeyError] = "Existe choque de horario con la asignacion del aula"; return RedirectToAction("Index"); } return RedirectToAction("Index"); }