public async Task <GaugeViewModel> ObtenerGaugeViewModel(long grupo, int anio, PersonaViewModel personaViewModel, bool todasLasAreas = false) { MedicionViewModel filtro = new MedicionViewModel(); filtro.Grupo = grupo; filtro.Anio = anio; filtro.BuscarPorNoAplica = true; filtro.NoAplica = false; IList <MedicionViewModel> medicionesViewModel = await Buscar(filtro); GaugeViewModel gaugeViewModel = new GaugeViewModel(); if (medicionesViewModel != null && medicionesViewModel.Count > 0) { MedicionViewModel ultimaMedicionCargada = medicionesViewModel.OrderBy(m => m.Mes).Reverse().First(); // Obtener el último indicador Indicador ultimoIndicador = IndicadorRepository.Buscar(new BuscarIndicadorViewModel { Busqueda = new IndicadorViewModel { Grupo = grupo }, PersonaLogueadaViewModel = personaViewModel, TodasLasAreas = todasLasAreas }).First(); gaugeViewModel.NombreMes = ultimaMedicionCargada.Mes.ToString(); gaugeViewModel.NombreIndicador = ultimoIndicador.Nombre; gaugeViewModel.Valor = ultimaMedicionCargada.Valor; CompletarEscalasGauge(gaugeViewModel, ultimaMedicionCargada); } return(gaugeViewModel); }
public MedicionViewModel ObtenerMedicionViewModelNoTask(int idIndicador, int mes, int?idMedicion, long grupo, int anio, PersonaViewModel personaViewModel) { MedicionViewModel medicionViewModel = new MedicionViewModel(); medicionViewModel.Mes = Helpers.EnumHelper <Enums.Enum.Mes> .Parse(mes.ToString()); medicionViewModel.IndicadorID = idIndicador; // Obtener el nombre del último indicador del grupo. IndicadorViewModel indicadorViewModel = IndicadorService.GetUltimoByGrupoNoTask(grupo, personaViewModel); if (idMedicion != null) { medicionViewModel = this.GetByIdNoTask(idMedicion.Value); } else { medicionViewModel.IndicadorViewModel = indicadorViewModel; } medicionViewModel.IndicadorViewModel.Nombre = indicadorViewModel.Nombre; return(medicionViewModel); }
public async Task<ActionResult> Create(PersonaViewModel view) { try { if (ModelState.IsValid) { var pic = string.Empty; var folder = "~/Content/Personas"; if (!string.IsNullOrEmpty(view.sFechaNacimiento)) { view.FechaNacimiento = DateTime.Parse(view.sFechaNacimiento); } if (!string.IsNullOrEmpty(view.sFechaSalida)) { view.FechaSalida = DateTime.Parse(view.sFechaNacimiento); } view.FechaIngreso = DateTime.Today; if (view.ImagenFile != null) { pic = FilesHelper.UploadPhoto(view.ImagenFile, folder); pic = string.Format("{0}/{1}", folder, pic); } Persona persona = ToPersona(view); persona.Imagen = pic; db.Personas.Add(persona); await db.SaveChangesAsync(); UsersHelper.CreateUserASP(view.Usuario, view.Role, view.Contrasena); return RedirectToAction("Index"); } ViewBag.numeroProvincia = new SelectList(db.Provincias, "numeroProvincia", "Nombre", view.numeroProvincia); var list = db.Cantones.Where(c => c.numeroProvincia == view.numeroProvincia); ViewBag.numeroCanton = new SelectList(list, "numeroCanton", "Nombre", view.numeroCanton); ViewBag.numeroDistrito = new SelectList(db.Distritos.Where(c => c.numeroCanton == view.numeroCanton && c.numeroProvincia == view.numeroProvincia), "numeroDistrito", "Nombre", view.numeroDistrito); var generos = new List<SelectListItem>(); generos.Add(new SelectListItem { Text = "Masculino", Value = "Masculino" }); generos.Add(new SelectListItem { Text = "Femenino", Value = "Femenino" }); ViewBag.Genero = new SelectList(generos, "Text", "Value", view.Genero); var roles = new List<SelectListItem>(); roles.Add(new SelectListItem { Text = "Administrador", Value = "Administrador" }); roles.Add(new SelectListItem { Text = "Supervisor", Value = "Supervisor" }); roles.Add(new SelectListItem { Text = "Agente", Value = "Agente" }); ViewBag.Role = new SelectList(roles, "Text", "Value", view.Role); ViewBag.EstadoCivilId = new SelectList(db.EstadosCiviles, "EstadoCivilId", "Nombre", view.EstadoCivilId); ViewBag.NacionalidadId = new SelectList(db.Nacionalidades, "NacionalidadId", "Nombre", view.NacionalidadId); ViewBag.PuestoId = new SelectList(db.Puestos.Where(p => p.Activo), "PuestoId", "Nombre", view.PuestoId); ViewBag.SupervisorId = new SelectList(db.Personas, "PersonaId", "Nombre", view.SupervisorId); ViewBag.RazonSocialId = new SelectList(db.RazonesSociales.Where(p => p.Activo), "RazonSocialId", "Nombre", view.RazonSocialId); return View(view); } catch (Exception ex) { if (ex.InnerException==null) { ViewBag.Error = ex.Message.ToString(); } else { ViewBag.Error = ex.InnerException.InnerException.Message.ToString(); } ViewBag.numeroProvincia = new SelectList(db.Provincias, "numeroProvincia", "Nombre", view.numeroProvincia); var list = db.Cantones.Where(c => c.numeroProvincia == view.numeroProvincia); ViewBag.numeroCanton = new SelectList(list, "numeroCanton", "Nombre", view.numeroCanton); ViewBag.numeroDistrito = new SelectList(db.Distritos.Where(c => c.numeroCanton == view.numeroCanton && c.numeroProvincia == view.numeroProvincia), "numeroDistrito", "Nombre", view.numeroDistrito); var generos = new List<SelectListItem>(); generos.Add(new SelectListItem { Text = "Masculino", Value = "Masculino" }); generos.Add(new SelectListItem { Text = "Femenino", Value = "Femenino" }); ViewBag.Genero = new SelectList(generos, "Text", "Value", view.Genero); var roles = new List<SelectListItem>(); roles.Add(new SelectListItem { Text = "Administrador", Value = "Administrador" }); roles.Add(new SelectListItem { Text = "Supervisor", Value = "Supervisor" }); roles.Add(new SelectListItem { Text = "Agente", Value = "Agente" }); ViewBag.Role = new SelectList(roles, "Text", "Value", view.Role); ViewBag.EstadoCivilId = new SelectList(db.EstadosCiviles, "EstadoCivilId", "Nombre", view.EstadoCivilId); ViewBag.NacionalidadId = new SelectList(db.Nacionalidades, "NacionalidadId", "Nombre", view.NacionalidadId); ViewBag.PuestoId = new SelectList(db.Puestos.Where(p => p.Activo), "PuestoId", "Nombre", view.PuestoId); ViewBag.SupervisorId = new SelectList(db.Personas, "PersonaId", "Nombre", view.SupervisorId); ViewBag.RazonSocialId = new SelectList(db.RazonesSociales.Where(p => p.Activo), "RazonSocialId", "Nombre", view.RazonSocialId); return View(view); } }
public ActionResult Delete(int id, PersonaViewModel model) { try { MediaRepository media = new MediaRepository(context); PersonaRepository repo = new PersonaRepository(context); var pel = media.GetAll(); var actor = repo.Query(g => g.Id == id).FirstOrDefault(); context.Entry(actor).Collection(m => m.Medias).Load(); if (actor.Medias.Count() == 0) { repo.LogicalDelete(actor); context.SaveChanges(); return(RedirectToAction("Index")); } else { List <lstMedias> lista = new List <lstMedias>(); var repository = new MovieRepository(context); var repository2 = new SerieRepository(context); foreach (var medi in actor.Medias) { var mov = repository.Query(m => m.id == medi.id && medi.estado != EEstatusMedia.ELIMINADO); var ser = repository2.Query(s => s.id == medi.id && medi.estado != EEstatusMedia.ELIMINADO); if (mov.Count() == 1) { lista.Add(new lstMedias() { id = medi.id, nombre = medi.nombre, tipo = "Película" }); } else if (ser.Count() == 1) { lista.Add(new lstMedias() { id = medi.id, nombre = medi.nombre, tipo = "Serie" }); } } if (lista.Count == 0) { repo.LogicalDelete(actor); context.SaveChanges(); return(RedirectToAction("Index")); } ViewData["inUsing"] = lista; ViewBag.Error = 1; model = MapHelper.Map <PersonaViewModel>(actor); return(Delete(model.Id)); } } catch { return(View()); } }
public async Task <List <PersonaViewModel> > BusquedaAjaxToken2(WebViewModel pagina, string busqueda) { var lista = new List <PersonaViewModel>(); var apellido = busqueda.Split('/')[0]; var nombre = busqueda.Split('/')[1]; using (var client = new HttpClient()) { var responseGet = await client.GetAsync(pagina.UrlBusqueda); var htmlBodyGet = await responseGet.Content.ReadAsStringAsync(); var htmlDocGet = new HtmlDocument(); htmlDocGet.LoadHtml(htmlBodyGet); var EVENTVALIDATIONSelector = htmlDocGet.DocumentNode.SelectNodes(pagina.SelectorEventValidation); var EVENTVALIDATIONSplit = EVENTVALIDATIONSelector[0].OuterHtml.Split("value="); var EVENTVALIDATION = EVENTVALIDATIONSplit[1].Substring(1, EVENTVALIDATIONSplit[1].Length - 3); var VIEWSTATESelector = htmlDocGet.DocumentNode.SelectNodes(pagina.SelectorState); var VIEWSTATESplit = VIEWSTATESelector[0].OuterHtml.Split("value="); var VIEWSTATE = VIEWSTATESplit[1].Substring(1, VIEWSTATESplit[1].Length - 3); var callBackSplit = htmlBodyGet.Split("callbackState':'"); var callBackSplit2 = callBackSplit[1].Split("','"); var callBackState = callBackSplit2[0]; var cookieContent = responseGet.Headers.FirstOrDefault(x => x.Key == "Set-Cookie").Value.First().Split(" ")[0]; var tokenCookie = cookieContent.Split("="); var name = tokenCookie[0]; var value = tokenCookie[1]; var parametros = new Dictionary <string, string>(); foreach (var item in pagina.Params.ToList()) { parametros.Add(item.Key.Replace("{4}", "ñ"), item.Value.Replace("{0}", apellido).Replace("{1}", nombre).Replace("{VIEWSTATE}", VIEWSTATE).Replace("{EVENTVALIDATION}", EVENTVALIDATION).Replace("{callbackState}", callBackState)); } var content = new FormUrlEncodedContent(parametros); content.Headers.Add("Cookie", $"{name}={value}"); var response = await client.PostAsync(pagina.UrlBusqueda, content); if (response.IsSuccessStatusCode) { var htmlBody = await response.Content.ReadAsStringAsync(); var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(htmlBody); var nodos = htmlDoc.DocumentNode.SelectNodes(pagina.Selector); if (nodos != null) { foreach (var nodo in nodos) { if (nodo.InnerText.ToUpper().Contains("COMPRADOR") || nodo.InnerText.ToUpper().Contains("&NBSP;") || nodo.InnerText.ToUpper().Contains("NOMBRE")) { continue; } var nuevo = new PersonaViewModel(); nuevo.Nombre = nodo.InnerText; nuevo.Conservador = pagina.Comuna; nuevo.Url = pagina.UrlBusqueda.Replace("{0}", busqueda); lista.Add(nuevo); } } } } return(lista); }
public PersonaView() { InitializeComponent(); BindingContext = PersonaViewModel.GetInstance(); }
public ActionResult EjemploParamsViewModel(PersonaViewModel persona) { ViewBag.Nombre = "Ejemplo de parametro: " + "\nNombre: " + persona.Nombre + " Edad: " + persona.Edad; return(View("FormPersona", persona)); }
public async Task <List <PersonaViewModel> > BusquedaAjax(WebViewModel pagina, string busqueda) { var lista = new List <PersonaViewModel>(); var apellido = ""; var nombre = ""; string[] nonceSplit; var nonce = ""; var separados = false; if (busqueda.Contains("/")) { apellido = busqueda.Split('/')[0]; nombre = busqueda.Split('/')[1]; separados = true; } using (var client = new HttpClient()) { var parametros = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(pagina.SelectorNonce)) { var llamadoGet = await client.GetAsync(pagina.Url); var llamadoGetContent = await llamadoGet.Content.ReadAsStringAsync(); var htmlDocGet = new HtmlDocument(); htmlDocGet.LoadHtml(llamadoGetContent); var nonce2 = htmlDocGet.DocumentNode.SelectNodes(pagina.SelectorNonce); nonceSplit = nonce2[0].OuterHtml.Split("value="); nonce = nonceSplit[1].Substring(1, 10); } foreach (var item in pagina.Params.ToList()) { if (separados) { parametros.Add(item.Key, item.Value.Replace("{0}", apellido).Replace("{1}", nombre).Replace("{nonce}", nonce).Replace("{aniofin}", DateTime.Now.Year.ToString())); } else { parametros.Add(item.Key, item.Value.Replace("{0}", busqueda).Replace("{5}", "Ñ").Replace("{nonce}", nonce).Replace("{aniofin}", DateTime.Now.Year.ToString())); } } var content = new FormUrlEncodedContent(parametros); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*")); var response = await client.PostAsync(pagina.UrlBusqueda, content); //var response = client.GetAsync(pagina.UrlBusqueda).Result; if (response.IsSuccessStatusCode) { var htmlBody = await response.Content.ReadAsStringAsync(); var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(htmlBody); if (pagina.Json) { var jsonn = JObject.Parse(htmlBody); if (jsonn[pagina.AtributoJson].ToString() != "No se han encontrado coincidencias" && jsonn[pagina.AtributoJson].ToString() != "0") { if (pagina.Url == "https://cbrlosandes.cl/consulta-propiedad/") { for (int i = 0; i < int.Parse(jsonn[pagina.AtributoJson].ToString()); i++) { var nuevo = new PersonaViewModel(); //System.Diagnostics.Debug.WriteLine(i); nuevo.Nombre = jsonn["data"][i][1].ToString(); nuevo.Conservador = pagina.Comuna; nuevo.Url = pagina.Url; lista.Add(nuevo); } } else { foreach (var item in jsonn["content"]["list"]) { var nuevo = new PersonaViewModel(); nuevo.Nombre = item["nombre"].ToString().Replace("{", "").Replace("}", ""); nuevo.Conservador = pagina.Comuna; nuevo.Url = pagina.Url; lista.Add(nuevo); } } } } else { var nodos = htmlDoc.DocumentNode.SelectNodes(pagina.Selector); if (nodos != null) { foreach (var nodo in nodos) { if (nodo.InnerText.ToUpper().Contains("COMPRADOR") || string.IsNullOrEmpty(nodo.InnerHtml)) { continue; } var nuevo = new PersonaViewModel(); nuevo.Nombre = nodo.InnerText.Replace(" ", ""); nuevo.Conservador = pagina.Comuna; nuevo.Url = pagina.Url; lista.Add(nuevo); } } } } } return(lista); }
public ActionResult Create(PersonaViewModel viewModel) { ViewBag.idDocumento = new SelectList(db.TipoDocumento, "idDocumento", "nombreDocumento", viewModel.idDocumento); ViewBag.idProgramaFormacion = new SelectList(db.ProgramaDeFormacion, "idPrograma", "nombre", viewModel.idProgramaFormacion); if (ModelState.IsValid) { Personas existe = db.Personas.FirstOrDefault(x => x.numeroDocumento == viewModel.numeroDocumento); if (existe != null) { ModelState.AddModelError("", "El número de documento ya existe."); return(View(viewModel)); } if (viewModel.EsInstructor) { if (viewModel.cargo == null) { ModelState.AddModelError("cargo", "El cargo es obligatorio."); return(View(viewModel)); } if (viewModel.idProgramaFormacion == 0) { ModelState.AddModelError("idProgramaFormacion", "El programa de formación es obligatorio."); return(View(viewModel)); } } Usuario existeCorreo = db.Usuario.FirstOrDefault(x => x.correo == viewModel.correo); if (existeCorreo != null) { ModelState.AddModelError("correo", "El correo ya existe."); return(View(viewModel)); } Personas persona = new Personas(); persona.apellidos = viewModel.apellidos; persona.celular = viewModel.celular; persona.direccion = viewModel.direccion; persona.idDocumento = viewModel.idDocumento; persona.nombres = viewModel.nombres; persona.numeroDocumento = viewModel.numeroDocumento; persona.telefono = viewModel.telefono; db.Personas.Add(persona); db.SaveChanges(); Personas registro = db.Personas.FirstOrDefault(x => x.numeroDocumento == persona.numeroDocumento); if (registro != null) { Usuario usuario = new Usuario(); usuario.idPersona = registro.idPersona; usuario.correo = viewModel.correo; usuario.estado = true; usuario.fechaIngreso = DateTime.Now; usuario.contraseña = "123"; db.Usuario.Add(usuario); db.SaveChanges(); RolDePersona rol = new RolDePersona(); rol.idPersona = registro.idPersona; rol.idRol = 1; rol.estado = true; if (viewModel.EsInstructor) { Instructor instructor = new Instructor(); instructor.idPersona = registro.idPersona; instructor.cargo = viewModel.cargo; db.Instructor.Add(instructor); db.SaveChanges(); InstructorProgramaDeFormacion programa = new InstructorProgramaDeFormacion(); programa.idPersonaInstructor = instructor.idPersona; programa.idPrograma = viewModel.idProgramaFormacion; programa.estado = true; db.InstructorProgramaDeFormacion.Add(programa); db.SaveChanges(); rol.idRol = 2; } db.RolDePersona.Add(rol); db.SaveChanges(); return(RedirectToAction("Index")); } } return(View(viewModel)); }
public ActionResult EjemploParamsViewModel() { PersonaViewModel persona = new PersonaViewModel(); return(View("FormPersona", persona)); }
public ActionResult Crear() { PersonaViewModel model = new PersonaViewModel(); return(View(model)); }
public HomePage() { InitializeComponent(); BindingContext = new PersonaViewModel(); }
public HttpResponseMessage Get(int Id) { var persona = new PersonaViewModel(_repository.GetPersona(Id, ActiveModule.ModuleID)); return(Request.CreateResponse(persona)); }
public async Task <MedicionViewModel> ObtenerMedicionViewModel(int idIndicador, int mes, int?idMedicion, long grupo, int anio, PersonaViewModel personaViewModel, bool buscarTodasLasAreas = false) { MedicionViewModel medicionViewModel = new MedicionViewModel(); medicionViewModel.Mes = Helpers.EnumHelper <Enums.Enum.Mes> .Parse(mes.ToString()); medicionViewModel.IndicadorID = idIndicador; // Obtener el nombre del último indicador del grupo. IndicadorViewModel indicadorViewModel = await IndicadorService.GetUltimoByGrupo(grupo, personaViewModel, buscarTodasLasAreas); if (idMedicion != null) { medicionViewModel = await this.GetById(idMedicion.Value); } else { medicionViewModel.IndicadorViewModel = indicadorViewModel; } medicionViewModel.IndicadorViewModel.Nombre = indicadorViewModel.Nombre; return(medicionViewModel); }
public PersonaDetailPage(PersonaViewModel viewModel) { InitializeComponent(); BindingContext = this.viewModel = viewModel; }
public async Task <IList <LineViewModel> > ObtenerLineViewModel(long grupo, int anio, PersonaViewModel personaViewModel) { MedicionViewModel filtro = new MedicionViewModel(); filtro.Grupo = grupo; filtro.Anio = anio; filtro.BuscarPorNoAplica = true; filtro.NoAplica = false; return(AutoMapper.Mapper.Map <IList <LineViewModel> >((await MedicionRepository.Buscar(filtro).ToListAsync()).OrderBy(m => m.Mes))); }
public FormularioNuevaVenta() { InitializeComponent(); BindingContext = PersonaViewModel.GetInstance(); }
public async Task <List <PersonaViewModel> > BusquedaAjaxPaginada(WebViewModel pagina, string busqueda) { var lista = new List <PersonaViewModel>(); var apellido = ""; var nombre = ""; var separados = false; if (busqueda.Contains("/")) { apellido = busqueda.Split('/')[0]; nombre = busqueda.Split('/')[1]; separados = true; } using (var client = new HttpClient()) { for (int i = pagina.InicioPagina != null ? pagina.InicioPagina.Value : 0; i < 1000; i = i + int.Parse(pagina.PaginaAjax)) { var parametros = new Dictionary <string, string>(); foreach (var item in pagina.Params.ToList()) { if (separados) { parametros.Add(item.Key, item.Value.Replace("{0}", apellido).Replace("{1}", nombre).Replace("{pagina}", i.ToString()).Replace("{aniofin}", DateTime.Now.Year.ToString())); } else { parametros.Add(item.Key, item.Value.Replace("{0}", busqueda).Replace("{pagina}", i.ToString()).Replace("{aniofin}", DateTime.Now.Year.ToString())); } } var content = new FormUrlEncodedContent(parametros); var response = await client.PostAsync(pagina.UrlBusqueda.Replace("{pagina}", i.ToString()), content); //var response = client.GetAsync(pagina.UrlBusqueda).Result; if (response.IsSuccessStatusCode) { var htmlBody = await response.Content.ReadAsStringAsync(); var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(htmlBody); var nodos = htmlDoc.DocumentNode.SelectNodes(pagina.Selector); if (pagina.UrlBusquedaColumnasSeparadas) { var nodos2 = htmlDoc.DocumentNode.SelectNodes(pagina.Selector2); if (nodos2 != null) { for (int j = 0; j < nodos2.Count; j++) { var nuevo = new PersonaViewModel(); nuevo.Nombre = nodos[j].InnerText + " " + nodos2[j].InnerHtml; nuevo.Conservador = pagina.Comuna; nuevo.Url = pagina.Url; lista.Add(nuevo); } } else { break; } } else { if (nodos != null) { foreach (var nodo in nodos) { if (nodo.InnerText.ToUpper().Contains("COMPRADOR") || nodo.InnerText.ToUpper().Contains("PERSONA") || nodo.InnerText.ToUpper().Contains("PROPIETARIO")) { if (nodos.Count() == 1) { i = 1000; break; } continue; } var nuevo = new PersonaViewModel(); nuevo.Nombre = nodo.InnerText; nuevo.Conservador = pagina.Comuna; nuevo.Url = pagina.Url; lista.Add(nuevo); } } else { break; } } } } } return(lista); }
public UsuarioDetalle() { InitializeComponent(); BindingContext = PersonaViewModel.GetInstance(); }
public ActionResult AceptacionTerminos(string btnImprimir, string btnAnterior, PersonaViewModel p) { if (btnImprimir == null && btnAnterior == null) { if (ModelState.IsValid) { Persona persona = new Persona(); persona = convertir.ConvertirPersonaModelPersonaBD(p); pSrv.PersonaActualizar(persona); return(View(p)); } else { return(View(false)); } } if (btnImprimir != null) { Persona persona = new Persona(); persona = convertir.ConvertirPersonaModelPersonaBD(p); pSrv.PersonaActualizar(persona); return(RedirectToAction("PersonaJuridica", "Impresion", new { Id = p.IdPersonaViewModel })); } if (btnImprimir == null && btnAnterior == null) { if (ModelState.IsValid) { Persona persona = new Persona(); persona = convertir.ConvertirPersonaModelPersonaBD(p); pSrv.PersonaActualizar(persona); return(View(p)); } else { return(View(false)); } } if (btnAnterior != null) { return(RedirectToAction("OperacionesInternacionales", "PersonaJuridica", new { Id = p.IdPersonaViewModel })); } return(View()); }
public async Task <IList <PersonaViewModel> > Buscar(PersonaViewModel filtro) { return(AutoMapper.Mapper.Map <IList <PersonaViewModel> >(await PersonaRepository.Buscar(filtro).ToListAsync())); }
public JsonResult Registro(PersonaViewModel persona) { persona.FullName = persona.Nombres + " " + persona.Apellidos; return(Json(persona)); }
public async Task <string> Guardar(PersonaViewModel personaViewModel) { Persona persona = AutoMapper.Mapper.Map <Persona>(personaViewModel); return(await PersonaRepository.Guardar(persona, personaViewModel.Contrasenia)); }
public FormularioPersona() { InitializeComponent(); BindingContext = new PersonaViewModel(); }
public async Task <int> Guardar(IndicadorViewModel indicadorViewModel, PersonaViewModel personaGuarda) { bool modificado = false; int mesActual = DateTimeHelper.OntenerFechaActual().Month; int idIndicadorOriginal = 0; if (indicadorViewModel.Id > 0) { Indicador indicadorOriginal = IndicadorRepository.GetById(indicadorViewModel.Id).First(); if (HayCambios(indicadorOriginal, indicadorViewModel) && await MedicionRepository.Buscar(new MedicionViewModel { IndicadorID = indicadorViewModel.Id }).AnyAsync(m => (int)m.Mes != mesActual)) { idIndicadorOriginal = indicadorViewModel.Id; indicadorViewModel.Id = 0; modificado = true; } } // Borrar los responsables previos await ResponsableIndicadorRepository.EliminarPorIndicador(indicadorViewModel.Id); // Borrar los interesados previos await InteresadoIndicadorRepository.EliminarPorIndicador(indicadorViewModel.Id); // Borrar los permisos previos await AccesoIndicadorRepository.EliminarPorIndicador(indicadorViewModel.Id); Indicador indicador = AutoMapper.Mapper.Map <Indicador>(indicadorViewModel); if (modificado) { indicador.FechaCreacion = indicador.FechaCreacion.Value.AddMinutes(1); } indicador.MetaAceptableMetaID = await GuardarMeta(indicadorViewModel.MetaAceptableViewModel); indicador.MetaAMejorarMetaID = await GuardarMeta(indicadorViewModel.MetaAMejorarViewModel); indicador.MetaExcelenteMetaID = await GuardarMeta(indicadorViewModel.MetaExcelenteViewModel); indicador.MetaInaceptableMetaID = await GuardarMeta(indicadorViewModel.MetaInaceptableViewModel); indicador.MetaSatisfactoriaMetaID = await GuardarMeta(indicadorViewModel.MetaSatisfactoriaViewModel); // Guardar el indicador await IndicadorRepository.Guardar(indicador); if (indicador.Grupo == 0) { indicador.Grupo = indicador.IndicadorID; await IndicadorRepository.Guardar(indicador); } if (modificado) { IndicadorAutomatico indicadorAutomatico = await IndicadorAutomaticoRepository.GetByIdIndicador(idIndicadorOriginal).FirstOrDefaultAsync(); if (indicadorAutomatico != null) { indicadorAutomatico.Indicador = null; indicadorAutomatico.IndicadorID = indicador.IndicadorID; await IndicadorAutomaticoRepository.Guardar(indicadorAutomatico); IndicadorAutomaticoViewModel indicadorAutomaticoViewModel = AutoMapper.Mapper.Map <IndicadorAutomaticoViewModel>(indicadorAutomatico); IndicadorAutomaticoRepository.DetenerJob(indicadorAutomaticoViewModel); IndicadorAutomaticoRepository.IniciarJob(indicadorAutomaticoViewModel); } } // Guardar los responsables await GuardarResponsables(indicadorViewModel.Responsables, indicador.IndicadorID); // Guardar los interesados await GuardarInteresados(indicadorViewModel.Interesados, indicador.IndicadorID); if (modificado) { // Si hay mediciones cargadas para el indicador que se esta modificando, actualizar la referencia al nuevo indicador IList <Medicion> mediciones = MedicionRepository.Buscar(new MedicionViewModel { IndicadorID = idIndicadorOriginal, Mes = (Enums.Enum.Mes)mesActual }).ToList(); if (mediciones != null && mediciones.Count > 0) { foreach (Medicion medicion in mediciones) { medicion.IndicadorID = indicador.IndicadorID; await MedicionRepository.Guardar(medicion); } } } await AuditarModificacionIndicador(personaGuarda); return(indicador.IndicadorID); }