private string agregarEquipoSolicitud(string body, string telefono) { int indice1 = 0; int indice2 = 0; int contador = 0; int idSolicitud = 0; int idEquipo = 0; int cantidad = 0; List<Equipo> disponibles = new List<Equipo>(); Solicitud solicitud = new Solicitud(); for (int i = 0; i < body.Length; i++) { if (body.ElementAt(i) == '*' && contador == 0) { indice1 = i; contador++; } else if (contador == 1 && body.ElementAt(i) == '*') { indice2 = i; } } try { idSolicitud = Int32.Parse(body.Substring(0, indice1)); idEquipo = Int32.Parse(body.Substring(indice1 + 1, indice2 - indice1 - 1)); cantidad = Int32.Parse(body.Substring(indice2 + 1, body.Length - indice2 - 1)); } catch { return "Ha ocurido un problema.\nVerifique el formato y vuelva a intentarlo"; } solicitud = db.Solicituds.Find(idSolicitud); if (solicitud == null) { return "Codigo Solicitud invalido. Vuelva a intentarlo."; } if (solicitud.EstatusSolicitud == 3 || solicitud.EstatusSolicitud == 2 && solicitud.Fecha > DateTime.Now) { disponibles = EquiposDisponibles(solicitud.Fecha.ToString(), solicitud.HoraInicio.ToString(), solicitud.HoraFin.ToString()); if (disponibles.Where(e => e.IdModeloEquipo == idEquipo).Count() == 0) { return "Equipo no esta disponible."; } else if (disponibles.Where(e => e.IdModeloEquipo == idEquipo).Count() < cantidad) { return "La cantidad seleccionada no esta disponible. \nIntente con una cantidad menor"; } foreach (var item in disponibles) { if (cantidad > 0 && item.IdModeloEquipo == idEquipo) { solicitud.Equipoes.Add(item); cantidad--; } } } else { return "La solicitud ya no puede ser editada"; } db.SaveChanges(); return "Equipo agregado. gracias"; }
private string eliminarEquipoSolicitud(string body, string p) { int indice1 = 0; int indice2 = 0; int contador = 0; int idSolicitud = 0; int idModeloEquipo = 0; int cantidad = 0; Solicitud solicitud = new Solicitud(); for (int i = 0; i < body.Length; i++) { if (body.ElementAt(i) == '*' && contador == 0) { indice1 = i; contador++; } else if (contador == 1 && body.ElementAt(i) == '*') { indice2 = i; } } try { idSolicitud = Int32.Parse(body.Substring(0, indice1)); idModeloEquipo = Int32.Parse(body.Substring(indice1 + 1, indice2 - indice1 - 1)); cantidad = Int32.Parse(body.Substring(indice2 + 1, body.Length - indice2 - 1)); } catch { return "Ha ocurido un problema.\nVerifique el formato y vuelva a intentarlo"; } if (db.Solicituds.SingleOrDefault(s => s.Id == idSolicitud) != null) { solicitud = db.Solicituds.SingleOrDefault(s => s.Id == idSolicitud); } else { return "Codigo Solicitud invalido. Vuelva a intentarlo."; } if (solicitud.EstatusSolicitud == 3 || solicitud.EstatusSolicitud == 2 && solicitud.Fecha > DateTime.Now) { List<Equipo> equipos = solicitud.Equipoes.ToList(); if (equipos.Where(e => e.IdModeloEquipo == idModeloEquipo).Count() == 0) { return "No existen equipos con ese codigo."; } foreach (var equipo in equipos) { if (solicitud.Equipoes.Count() == 1) { return "No se pueden eliminar Todos los equipos de la solicitud, de lo contrario sera cancelada."; } if (cantidad > 0 && equipo.IdModeloEquipo == idModeloEquipo) { solicitud.Equipoes.Remove(equipo); cantidad--; } } } else { return "La solicitud ya no puede ser editada"; } db.SaveChanges(); return "Equipos eliminados. gracias"; }
public string ProcesarSolicitud(string solicitud, string telefono) { string fecha; string horaInicio; string horaFin; string equiposStr; int lugar = 0; string nipSMS = null; List<ModeloEquipo> modelosDisponibles = new List<ModeloEquipo>(); List<Equipo> equiposDisponibles = new List<Equipo>(); //almacena la nueva Solicitud Solicitud nuevaSolicitud = new Solicitud(); //Seleccionando los id de las Solicitudes anteriores para obtener la ultima var SolicitudsId = db.Solicituds.Select(s => s.Id).ToList(); try { //Validando que el usuario este registrado para proceder con la solicitud int codigoUsuario = 0; var contacto = db.Contactoes.SingleOrDefault(c => c.Descripcion == telefono); if (contacto != null) { codigoUsuario = db.Contactoes.SingleOrDefault(c => c.Descripcion == telefono).IdUserProfile; //Validando que el usurario solo pueda Registrar 5 solucitudes maximas por sms cada semestre var solicitudesSMS = from s in contacto.Solicituds where contacto.IdUserProfile == codigoUsuario && s.Fecha >= DateTime.Now.AddMonths(-3) && s.Fecha <= DateTime.Now.AddMonths( 3) select s.Id; if (solicitudesSMS.Count() > 8) { Session["opcion"] = ""; Session["spp"] = ""; Session["sppOpcion"] = ""; return "Usted ha excedido el maximo de solicitud sms por semestre."; } } else { Session["opcion"] = ""; Session["spp"] = ""; Session["sppOpcion"] = ""; return "Su numero No esta registrado como Contacto de algun usuario.\n Registrelo o cree una cuenta. "; } fecha = solicitud.Substring(2, 10); horaInicio = solicitud.Substring(13, 5); horaFin = solicitud.Substring(19, 5); nipSMS = solicitud.Substring(25, 4); equiposStr = solicitud.Substring(30, solicitud.Length - 30); //validando que el nipsms enviado sea igual al que esta registrado y pertenece al usuario para confirmar la solicitud if (db.UserProfiles.SingleOrDefault(n => n.UserId == codigoUsuario).NipSms != nipSMS) { Session["opcion"] = ""; Session["spp"] = ""; Session["sppOpcion"] = ""; return "NipSMS invalido. \nFavor vuelva a intentarlo.\nPuede Solicitarlo via web."; } try { nuevaSolicitud.Fecha = DateTime.Parse(fecha); nuevaSolicitud.HoraInicio = TimeSpan.Parse(horaInicio); nuevaSolicitud.HoraFin = TimeSpan.Parse(horaFin); nuevaSolicitud.Descripcion = "Solicitud SMS"; nuevaSolicitud.IdUserProfile = codigoUsuario; nuevaSolicitud.EstatusSolicitud = (int)EstatusSolicitudes.En_Proceso; } catch { Session["opcion"] = ""; Session["spp"] = ""; Session["sppOpcion"] = ""; return "Error en el formato de la hora o la fecha"; } //Obteniendo los equipos disponibles a partir de la fecha horaInicio y horaFin de la solicitudSms equiposDisponibles = EquiposDisponibles(fecha, horaInicio, horaInicio); if (equiposDisponibles.Count == 0) { Session["opcion"] = ""; Session["spp"] = ""; Session["sppOpcion"] = ""; return "No hay equipos disponibles para esta fecha"; } List<Tuple<string, string>> equipos = new List<Tuple<string, string>>(); int cont = 50; int indice = 0; int indice2 = 0; for (int i = 0; i < equiposStr.Length; i++) { //sacando el id del salon para agregarlo a la solicitud if (equiposStr.ElementAt(i) == '*' && cont == 50) { lugar = Int32.Parse(equiposStr.Substring(0, i)); equiposStr = equiposStr.Substring(i + 1, equiposStr.Length - i - 1); cont = 0; i = 0; //validando que el salon sea valido if (db.AulaEdificios.SingleOrDefault(a => a.Id == lugar) != null) { nuevaSolicitud.IdAulaEdificio = lugar; } else { Session["opcion"] = ""; Session["spp"] = ""; Session["sppOpcion"] = ""; return "Error con el codigo Lugar.\nVuelva a intentarlo.\nEnviar Lu para saber mas."; } } //sacando los equipos y la cantidad para agregarlos a la solicitud if (equiposStr.ElementAt(i) == '*' && cont == 0) { indice2 = i; cont++; } else if (equiposStr.ElementAt(i) == '*' && cont != 0) { equipos.Add(new Tuple<string, string>(equiposStr.Substring(indice, indice2), equiposStr.Substring((indice2) + 1, i - indice2 - 1))); indice = 0; cont = 0; equiposStr = equiposStr.Substring(i + 1, equiposStr.Length - i - 1); i = 0; } } //Verificando si el modelo seleccionado esta disponible con relacion a los modelos disponibles por fecha y hora foreach (var item in equipos) { int cantidadXModelo = equiposDisponibles.Where(e => e.IdModeloEquipo == Int32.Parse(item.Item1)).Count(); if (cantidadXModelo == 0) { Session["opcion"] = ""; Session["spp"] = ""; Session["sppOpcion"] = ""; return "Equipo " + item.Item1 + " no esta disponible.\nSolicitud cancelada\n Vuelva a intentarlo"; } else if (cantidadXModelo < Int32.Parse(item.Item2)) { Session["opcion"] = ""; Session["spp"] = ""; Session["sppOpcion"] = ""; return "Cantidad Equipo " + item.Item1 + " solo hay " + cantidadXModelo + " disponible.\nSolicitud cancelada\n Vuelva a intentarlo"; } else { int cantidad = Int32.Parse(item.Item2); int cantidadXModelo2 = equiposDisponibles.Where(e => e.IdModeloEquipo == Int32.Parse(item.Item1)).Count(); foreach (var equipo in equiposDisponibles) { if (cantidad > 0 && equipo.IdModeloEquipo == Int32.Parse(item.Item1) && cantidad <= cantidadXModelo2) { //Actualizamos el estatus del equipo para que se refleje su primer uso en caso de que no haya sido utilizado db.Equipoes.SingleOrDefault(e => e.Id == equipo.Id).EstatusEquipo = 1; nuevaSolicitud.Equipoes.Add(equipo); cantidad--; } } } } //nuevaSolSms.IdContacto = db.Contactoes.SingleOrDefault(c => c.Descripcion == telefono).Id; try { db.Solicituds.Add(nuevaSolicitud); db.SaveChanges(); } catch (DbEntityValidationException e) { return e.EntityValidationErrors.First().ValidationErrors.First().ErrorMessage; } } catch (Exception e) { Session["opcion"] = ""; Session["spp"] = ""; Session["sppOpcion"] = ""; return "Error procesando su solicitud Revise el formato"; } Session["opcion"] = ""; Session["spp"] = ""; Session["sppOpcion"] = ""; return "Solicitud Procesada.\nSu codigo:" +nuevaSolicitud.Id + "\n!Gracias!\n!Favor guardar Codigo!"; }