public async Task <ActionResult> EditarContratoAjax(Contrato_Web contrato) { //Otro Objeto tipo contrato... para que? //Para obtener los hijos que faltan y? //eliminarlos o dejarlos en estado muerto... Contrato_Web contrato_comparar = new Contrato_Web(); await contrato_comparar.Read(contrato.Id); //Se envia a actualizar el contrato a la web api if (!await contrato.Update()) { return(Json(false, JsonRequestBehavior.AllowGet)); } #region Seccion Seguros //SEGUROS var seguros_eliminar = contrato_comparar.ListaSeguroAsociados; if (contrato.ListaSeguroAsociados != null && contrato.ListaSeguroAsociados.Any()) { //Se actualizan los seguros asociados... siempre que tengan Id var seguros_actualizar = contrato.ListaSeguroAsociados.Where(n => n.Id != 0); foreach (var item in seguros_actualizar) { Seguro_Asociado_Web seguro_update = new Seguro_Asociado_Web() { Id = item.Id, Total_Dias = item.Total_Dias, Tipo_Seguro = item.Tipo_Seguro, Valor = item.Valor, Contrato = contrato, Seguro = item.Seguro }; if (!await seguro_update.Update()) { return(Json("Error al actualizar un seguro asociado", JsonRequestBehavior.AllowGet)); } } foreach (var item in contrato.ListaSeguroAsociados.Where(n => n.Id == 0)) { Seguro_Asociado_Web seguro_create = new Seguro_Asociado_Web() { Total_Dias = item.Total_Dias, Tipo_Seguro = item.Tipo_Seguro, Valor = item.Valor, Contrato = contrato, Seguro = item.Seguro }; if (!await seguro_create.Create()) { return(Json("Error al crear un seguro asociado", JsonRequestBehavior.AllowGet)); } } //Se quitan los registros actualizados... seguros_eliminar = seguros_eliminar.Where(p => !seguros_actualizar.Any(p2 => p2.Id == p.Id)).ToList(); } //Se borran los seguros que no existan... foreach (var item in seguros_eliminar) { Seguro_Asociado_Web seguro_delete = new Seguro_Asociado_Web() { Id = item.Id }; if (!await seguro_delete.Delete()) { return(Json("Error al borrar un seguro asociado", JsonRequestBehavior.AllowGet)); } } #endregion #region Seccion de servicios //SERVICIOS var servicios_eliminar = contrato_comparar.ListaServiciosAsociados; if (contrato.ListaServiciosAsociados != null && contrato.ListaServiciosAsociados.Any()) { //Se actualizan los servicios asociados... siempre que tengan Id var servicios_actualizar = contrato.ListaServiciosAsociados.Where(n => n.Id != 0); foreach (var item in servicios_actualizar) { Servicio_Asociado_Web servicio_update = new Servicio_Asociado_Web() { Id = item.Id, Contrato = contrato, Servicio = item.Servicio }; if (!await servicio_update.Update()) { return(Json("Error al actualizar un servicio asociado", JsonRequestBehavior.AllowGet)); } } //Se crean los servicios asociados si no tienen Id XD foreach (var item in contrato.ListaServiciosAsociados.Where(n => n.Id == 0)) { Servicio_Asociado_Web servicio_create = new Servicio_Asociado_Web() { Contrato = contrato, Servicio = item.Servicio }; if (!await servicio_create.Create()) { return(Json("Error al crear un servicio asociado", JsonRequestBehavior.AllowGet)); } } //Se quitan los registros actualizados... servicios_eliminar = servicios_eliminar.Where(p => !servicios_actualizar.Any(p2 => p2.Id == p.Id)).ToList(); } //Se borran los servicios que no existan... foreach (var item in servicios_eliminar) { Servicio_Asociado_Web servicio_delete = new Servicio_Asociado_Web() { Id = item.Id }; if (!await servicio_delete.Delete()) { return(Json("Error al borrar un servicio asociado", JsonRequestBehavior.AllowGet)); } } #endregion #region Seccion de destinos //DESTINOS var destinos_eliminar = contrato_comparar.ListaDestinosAsociados; if (contrato.ListaDestinosAsociados != null && contrato.ListaDestinosAsociados.Any()) { //Se actualizan los destinos asociados... siempre que tengan Id var destinos_actualizar = contrato.ListaDestinosAsociados.Where(n => n.Id != 0); foreach (var item in destinos_actualizar) { Destino_Asociado_Web servicio_update = new Destino_Asociado_Web() { Id = item.Id, Contrato = contrato, Destino = item.Destino }; if (!await servicio_update.Update()) { return(Json("Error al actualizar un destino asociado", JsonRequestBehavior.AllowGet)); } } //Se crean los destinos asociados si no tienen Id XD foreach (var item in contrato.ListaDestinosAsociados.Where(n => n.Id == 0)) { Destino_Asociado_Web destino_create = new Destino_Asociado_Web() { Contrato = contrato, Destino = item.Destino }; if (!await destino_create.Create()) { return(Json("Error al crear un destino asociado", JsonRequestBehavior.AllowGet)); } } //Se quitan los registros actualizados... destinos_eliminar = destinos_eliminar.Where(p => !destinos_actualizar.Any(p2 => p2.Id == p.Id)).ToList(); } //Se borran los destinos que no existan... foreach (var item in destinos_eliminar) { Destino_Asociado_Web destino_delete = new Destino_Asociado_Web() { Id = item.Id }; if (!await destino_delete.Delete()) { return(Json("Error al borrar un destino asociado", JsonRequestBehavior.AllowGet)); } } #endregion #region Seccion Archivos //ARCHIVOS var archivos_eliminar = contrato_comparar.ListaArchivos; if (contrato.ListaArchivos != null && contrato.ListaArchivos.Any()) { var archivos_nuevos = contrato.ListaArchivos.Where(n => n.Id == 0); var archivos_contrato = ArchivosTemporales().Where(p => !archivos_nuevos.Any(p2 => p2.Nombre == p)); foreach (var item in archivos_contrato) { if (!SaveArchivoContrato(contrato.Id, item)) { return(Json("Error al guardar el archivo en carpeta", JsonRequestBehavior.AllowGet)); } Archivo_Web archivo_create = new Archivo_Web() { Nombre = Path.GetFileName(item), Contrato = contrato }; if (!await archivo_create.Create()) { return(Json("Error al registrar el archivo ", JsonRequestBehavior.AllowGet)); } } RemoveFiles(); //Se quitan los archivos viejos que no se eliminaron var archivos_viejos = contrato.ListaArchivos.Where(n => n.Id != 0); archivos_eliminar = archivos_eliminar.Where(p => !archivos_viejos.Any(p2 => p2.Id == p.Id)).ToList(); } //Se borran los archivos que no existan... foreach (var item in archivos_eliminar) { Archivo_Web archivo_delete = new Archivo_Web() { Id = item.Id }; if (!await archivo_delete.Delete()) { return(Json("Error al borrar un archivo", JsonRequestBehavior.AllowGet)); } } #endregion return(Json(true, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> CrearContratoAsync(Contrato_Web contrato) { //Se envia a crear el contrato a la web api if (!await contrato.Create()) { return(Json(false, JsonRequestBehavior.AllowGet)); } //Se crean los servicios relacionados... if (contrato.ListaServiciosAsociados != null && contrato.ListaServiciosAsociados.Any()) { foreach (var item in contrato.ListaServiciosAsociados) { Servicio_Asociado_Web servicio_create = new Servicio_Asociado_Web() { Contrato = contrato, Servicio = item.Servicio }; if (!await servicio_create.Create()) { return(Json("Error al crear un servicio asociado", JsonRequestBehavior.AllowGet)); } } } //Se crean los destinos relacionados... if (contrato.ListaDestinosAsociados != null && contrato.ListaDestinosAsociados.Any()) { foreach (var item in contrato.ListaDestinosAsociados) { Destino_Asociado_Web destino_create = new Destino_Asociado_Web() { Contrato = contrato, Destino = item.Destino }; if (!await destino_create.Create()) { return(Json("Error al crear un destino asociado", JsonRequestBehavior.AllowGet)); } } } //Se crean los seguros asociados... if (contrato.ListaSeguroAsociados != null && contrato.ListaSeguroAsociados.Any()) { foreach (var item in contrato.ListaSeguroAsociados) { Seguro_Asociado_Web seguro_create = new Seguro_Asociado_Web() { Total_Dias = item.Total_Dias, Tipo_Seguro = item.Tipo_Seguro, Valor = item.Valor, Contrato = contrato, Seguro = item.Seguro }; if (!await seguro_create.Create()) { return(Json("Error al crear un seguro asociado", JsonRequestBehavior.AllowGet)); } } } //Se guardar los archivos subidos... if (contrato.ListaArchivos != null && contrato.ListaArchivos.Any()) { var archivos_contrato = ArchivosTemporales().Where(p => !contrato.ListaArchivos.Any(p2 => p2.Nombre == p)); foreach (var item in archivos_contrato) { if (!SaveArchivoContrato(contrato.Id, item)) { return(Json("Error al guardar el archivo en carpeta", JsonRequestBehavior.AllowGet)); } Archivo_Web archivo_create = new Archivo_Web() { Nombre = Path.GetFileName(item), Contrato = contrato }; if (!await archivo_create.Create()) { return(Json("Error al registrar el archivo ", JsonRequestBehavior.AllowGet)); } } RemoveFiles(); } return(Json(true, JsonRequestBehavior.AllowGet)); }