Пример #1
0
        /// <summary>
        /// Agrega el cliente pasado como parámetro al layout del fondo.
        /// Lo introduce en una nueva fila.
        /// </summary>
        /// <param name="control"></param>
        void AgregarClienteControl(ClienteControl control)
        {
            // La sentencia if es para que no se cree una nueva fila si exiten filas vacías
            // disponibles donde se puede poner el nuevo cliente.
            if (vacio)
            {
                vacio = false;
            }
            else
            {
                tableLayoutClientes.RowCount++;
            }

            tableLayoutClientes.Controls.Add(control, 0, tableLayoutClientes.RowCount - 1);
            controlesCliente.Add(control);
        }
Пример #2
0
        /// <summary>
        /// Crear nuevo cliente cuando se hace click en el botón correspondiente.
        /// </summary>
        private async void CrearCliente(object sender, EventArgs e)
        {
            FormNuevoCliente dialogo = new FormNuevoCliente();

            // Abre una ventana de dialogo para obtener la información del nuevo cliente.
            if (dialogo.ShowDialog() == DialogResult.OK)
            {
                Client cliente = new Client(dialogo.darNombreCliente(), dialogo.darTipoAsociacion());
                // TODO Agregar el id del usuario al cliente.

                ClienteControl clienteControl = null;
                using (var httpClient = new HttpClient())
                {
                    httpClient.BaseAddress = new Uri(DIRECCION_SERVIDOR);
                    httpClient.DefaultRequestHeaders.Accept.Clear();
                    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(APP_JSON));
                    if (Sesion != null)
                    {
                        httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Sesion.access_token);
                    }

                    HttpResponseMessage response = await httpClient.PostAsJsonAsync(RUTA_CLIENTES, cliente);

                    if (response.IsSuccessStatusCode)
                    {
                        cliente = await response.Content.ReadAsAsync <Client>(); // Esto se hace para obtener el Id asignado por el servidor.

                        //AgregarClienteControl(cliente);
                        clienteControl = new ClienteControl(cliente);
                        AgregarClienteControl(clienteControl);
                    }
                    else
                    {
                        MessageBox.Show("No fue posible guardar el nuevo cliente en la base de datos. Revise si el servidor está disponible.", "Error al comunicarse con el servidor");
                        return;
                    }
                }

                // Registra el contacto principal si se rellenaron los campos correspondientes.
                if (dialogo.CrearNuevoContacto)
                {
                    // Si se va a crear un nuevo contacto, es necesario que al menos el campo del nombre no esté vacío.
                    if (dialogo.darNombreContactoPrincipal() != "")
                    {
                        Contact contacto = new Contact(dialogo.darNombreContactoPrincipal());
                        contacto.JobTitle  = dialogo.darCargoContactoPrincipal();
                        contacto.Mail      = dialogo.darCorreoContactoPrincipal();
                        contacto.Telephone = dialogo.darTelefonoContactoPrincipal();
                        contacto.ClientId  = cliente.Id;

                        // Envía el query POST
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri(DIRECCION_SERVIDOR);
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(APP_JSON));
                            if (Sesion != null)
                            {
                                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Sesion.access_token);
                            }

                            HttpResponseMessage response = await httpClient.PostAsJsonAsync(RUTA_CONTACTOS, contacto);

                            if (response.IsSuccessStatusCode)
                            {
                                contacto = await response.Content.ReadAsAsync <Contact>(); // Esto se hace para obtener el Id asignado por el servidor.

                                clienteControl.Cliente.MainContactId = contacto.Id;
                                clienteControl.GuardarCambiosCliente();
                                clienteControl.ImprimirDatosContactoPrincipal(contacto);
                                clienteControl.AgregarControlContacto(contacto);
                            }
                            else
                            {
                                MessageBox.Show("No fue posible guardar el nuevo contacto en la base de datos. Revise si el servidor está disponible.", "Error al comunicarse con el servidor");
                            }
                        }
                    }
                }
                else   // Esto sucede cuando se selecciona un contacto de la lista de contactos existentes.
                {
                    Contact contacto = dialogo.darContactoSeleccionado();
                    clienteControl.Cliente.MainContactId = contacto.Id;
                    clienteControl.GuardarCambiosCliente();
                    clienteControl.ImprimirDatosContactoPrincipal(contacto);
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Obtiene los clientes desde el backend por medio de un servicio web.
        /// Crea los controles correspondientes y los agrega a al layout de fondo.
        /// </summary>
        private async void CargarClientes(string ruta)
        {
            LimpiarListas();
            cargando = true;

            // Quitar filtros
            FiltroEstado.Checked       = false;
            toolStripLabelMensaje.Text = CARGANDO;

            // Obtener los clientes con un query GET.
            using (var httpClient = new HttpClient())
            {
                httpClient.BaseAddress = new Uri(DIRECCION_SERVIDOR);
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(APP_JSON));
                if (Sesion != null)
                {
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Sesion.access_token);
                }

                HttpResponseMessage response = await httpClient.GetAsync(ruta);

                if (response.IsSuccessStatusCode)
                {
                    Client[] clientes = await response.Content.ReadAsAsync <Client[]>();

                    foreach (Client cliente in clientes)
                    {
                        var controlCliente = new ClienteControl(cliente);
                        controlCliente.ObtenerDatosContactoPrincipal(cliente.MainContactId);
                        AgregarClienteControl(controlCliente);

                        // Obtener las tarea del cliente y las agrega en los controles correspondientes.
                        response = await httpClient.GetAsync(RUTA_CLIENTES + "/" + cliente.Id + RUTA_TAREAS_CLIENTE);

                        if (response.IsSuccessStatusCode)
                        {
                            Job[] tareas = await response.Content.ReadAsAsync <Job[]>();

                            foreach (var tarea in tareas)
                            {
                                controlCliente.AgregarControlTarea(tarea);
                            }
                        }

                        // Obtener los contactos del cliente y las agrega en los controles correspondientes.
                        response = await httpClient.GetAsync(RUTA_CLIENTES + "/" + cliente.Id + RUTA_CONTACTOS_CLIENTE);

                        if (response.IsSuccessStatusCode)
                        {
                            Contact[] contactos = await response.Content.ReadAsAsync <Contact[]>();

                            foreach (var contacto in contactos)
                            {
                                controlCliente.AgregarControlContacto(contacto);
                            }
                        }
                    }
                }
                else
                {
                    toolStripLabelMensaje.Text = "Respuesta negativa del servidor";
                }
            }
            MinimizarControles();
            cargando = false;
            toolStripLabelMensaje.Text = "Conectado como: " + Sesion.userName;
        }