Exemplo n.º 1
0
        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"));
        }