public async Task <IActionResult> GuardarIngresoDatosPaciente([FromBody] FomularioIngresoDatosPaciente paciente) { int total = 0; string esPredeterminado = "1"; //Genera instancia WF ya que aqui es donde empieza todo el proceso string resumen = "Paciente: " + paciente.RutPaciente + " - " + paciente.ApellidosPaciente + " " + paciente.NombrePaciente + ", Solicitda: " + paciente.DrSolicitante + ", Orden: " + paciente.NroOrden; var solicitudGen = _wfService.Instanciar("FlujoPruebas", "17042783-1", resumen); #region Paciente //Generar modelo de cliente que en este caso es un paciente que viene a la oficina Cliente _paciente = new Cliente { Nombres = paciente.NombrePaciente + " " + paciente.ApellidosPaciente, Rut = paciente.RutPaciente, TipoCliente = TipoCliente.Paciente, EsPersonalidadJuridica = false, PrevisionSalud = _context.PrevisionesSalud.FirstOrDefault(p => p.Id == paciente.PrevisionSalud) }; MetaDatosCliente _pacienteApellidos = new MetaDatosCliente { Cliente = _paciente, Clave = "Apellidos", Valor = paciente.ApellidosPaciente, Orden = 1 }; MetaDatosCliente _pacienteNombres = new MetaDatosCliente { Cliente = _paciente, Clave = "Nombres", Valor = paciente.NombrePaciente, Orden = 2 }; #endregion #region Telefono Movil Contacto _telMovil = new Contacto { Cliente = _paciente, EsPrincipal = true, TipoContacto = TipoContacto.TelefonoMovil, Resumen = paciente.Telefono, }; #endregion #region Correo Contacto _correoPac = new Contacto { Cliente = _paciente, EsPrincipal = true, TipoContacto = TipoContacto.CorreoElectronico, Resumen = paciente.Correo, }; #endregion Cotizacion _cotizza = new Cotizacion { Cliente = _paciente, DrSolicitante = paciente.DrSolicitante, EsOT = false, FechaCreacion = DateTime.Now, FechaExpiracion = DateTime.Now.AddDays(10), FolioSolicitante = paciente.NroOrden, Resumen = "Creado el " + DateTime.Now.ToString(), NumeroTicket = solicitudGen.NumeroTicket, ImagenOrdenSolicitante = paciente.SrcImagen, PrecioCotizacion = total }; foreach (var x in paciente.Servicios) { ItemCotizar _itm; if (x.id.Equals("Otro")) { _itm = new ItemCotizar { Cotizacion = _cotizza, Descripcion = x.descripcion }; esPredeterminado = "0"; } else { _itm = new ItemCotizar { Cotizacion = _cotizza, Servicio = _context.Servicios.FirstOrDefault(s => s.Id == Convert.ToInt32(x.id)), Cantidad = Convert.ToInt32(x.cantidad) }; total += _itm.Cantidad * _itm.Servicio.ValorTotal; } _context.ItemsCorizar.Add(_itm); } _cotizza.PrecioCotizacion = total; //Guardar datos _context.Clientes.Add(_paciente); _context.MetadatosClientes.Add(_pacienteApellidos); _context.MetadatosClientes.Add(_pacienteNombres); _context.Contactos.Add(_telMovil); _context.Contactos.Add(_correoPac); _context.Cotizaciones.Add(_cotizza); var respuesta = await _context.SaveChangesAsync(); _wfService.AsignarVariable("ES_TRABAJO_PREDETERMINADO", esPredeterminado, solicitudGen.NumeroTicket); _wfService.Avanzar("FlujoPruebas", EtapasFlujoInterno.IngresoDatosPaciente, solicitudGen.NumeroTicket, "17042783-1"); return(Ok("Datos guardados")); }