/// <summary> /// Crear una nueva tarea. Envía un query POST para crear la tarea en el backend. /// Si la respuesta es favorable, agrega la tarea a la interfaz. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void NuevaTarea(object sender, EventArgs e) { Job tarea = new Job(Cliente.Id); using (var httpClient = new HttpClient()) { httpClient.BaseAddress = new Uri(Form1.DIRECCION_SERVIDOR); httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(Form1.APP_JSON)); if (Form1.Sesion != null) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Form1.Sesion.access_token); } HttpResponseMessage response = await httpClient.PostAsJsonAsync(Form1.RUTA_TAREAS, tarea); if (response.IsSuccessStatusCode) { tarea = await response.Content.ReadAsAsync <Job>(); // Esto se hace para obtener el Id asignado por el servidor. TareaControl control = new TareaControl(tarea); AgregarControlTarea(control); control.EnfocarEnNombre(); } else { MessageBox.Show("No fue posible guardar la nueva tarea en la base de datos. Revise si el servidor está disponible.", "Error al comunicarse con el servidor"); } } }
/// <summary> /// Agrega un controlTarea al tableLayout correspondiente. /// Coloca el controlador en una tabla nueva. /// </summary> /// <param name="tarea"></param> public void AgregarControlTarea(TareaControl 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 contacto. if (!hayTareas) { hayTareas = true; } else { tableLayoutTareas.RowCount++; } tableLayoutTareas.Controls.Add(control, 0, tableLayoutTareas.RowCount - 1); Form1.controlesTareas.Add(control); }