private void tlGuardar_Click(object sender, RoutedEventArgs e)
        {
            if (dtgrdcam.SelectedIndex < 0)
            {
                MessageBox.Show("Debe elegir una camarera", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            bool hb_ds = false;

            hb_ds = hab_distintas();//Método para corroborar si hay cambios en habitaciones seleccionadas
            Clases.C_Asignacion asg = new Clases.C_Asignacion();
            string txtdescbit       = "";

            if (dtgrdhabsel.Items.Count == 0)//Para eliminar todas las habitaciones asignadas a una camarera
            {
                asg.EliminarAsignPorCamarera(cm_act.idCamarera);


                if (sp_act != null)
                {
                    txtdescbit = "ELIMINACIÓN (NOMBRE CAM.='" + cm_act.nombre + " " + cm_act.apellido + "', CÉD CAM.='" + cm_act.cedula + "'; NOMBRE SUP.='" + sp_act.nombre + " " + sp_act.apellido + "', CÉD SUP.='" + sp_act.cedula + "'; ";
                }
                else
                {
                    txtdescbit = "ELIMINACIÓN (NOMBRE CAM.='" + cm_act.nombre + " " + cm_act.apellido + "', CÉD CAM.='" + cm_act.cedula + "'; NOMBRE SUP.='-SIN ASIGNAR-'; ";
                }


                txtdescbit += "HABS.=";
                foreach (Clases.habitacionIqware h2 in hb_act)
                {
                    txtdescbit += "'" + h2.RoomNo + "',";
                }
                txtdescbit  = txtdescbit.Remove(txtdescbit.Length - 1);
                txtdescbit += ")";


                Clases.Bitacora bitc = new Clases.Bitacora(1, 3, txtdescbit, user.login);
                if (bitc.Guardar() == 1)
                {
                    Console.WriteLine("Eliminación de asignación guardada en la bitácora");
                }
                //----------------------------------------------------//

                MessageBox.Show("Asignación modificada satisfactoriamente", "Completado", MessageBoxButton.OK, MessageBoxImage.Information);
                DialogResult = true;
                Close();
                return;
            }


            Clases.C_Camarera   cam = dtgrdcam.SelectedItem as Clases.C_Camarera;
            Clases.C_Supervisor sup = dtgrdsup.SelectedItem as Clases.C_Supervisor;


            //-------------    Bitácora    ------------------------------------------//


            txtdescbit = "MODIFICACIÓN (";

            asg.idcamarera = cam.idCamarera;
            asg.idUsuario  = user.idUsuario;

            if (dtgrdsup.SelectedIndex < 0)
            {
                asg.idsupervisor = -1;
            }
            else
            {
                asg.idsupervisor = sup.idSupervisor;
            }

            if (habaux.Count > 0)
            {
                if (cm_act.idSupervisor != -1 && dtgrdsup.Items.Count != 0) //Si hay supervisores asignados en la base de datos (Viejo y Nuevo)
                {
                    if (sp_act.idSupervisor != sup.idSupervisor)            //Supervisores distinitos (anterior y nuevo)
                    {
                        txtdescbit += "NOMBRE SUP. ANT.='" + sp_act.nombre + " " + sp_act.apellido + "', CÉD SUP. ANT.='" + sp_act.cedula + "', NOMBRE SUP. NVO.='" + sup.nombre + " " + sup.apellido + "', CÉD SUP. NVO.='" + sup.cedula + "'; ";
                    }
                    else
                    {
                        txtdescbit += "NOMBRE SUP.='" + sup.nombre + " " + sup.apellido + "', CÉD SUP.='" + sup.cedula + "'; ";
                    }
                }
                else if (cm_act.idSupervisor == -1 && dtgrdsup.SelectedIndex >= 0)
                {//Si no hay en viejo y hay en nuevo
                    txtdescbit += "NOMBRE SUP. ANT.='SIN ASIGNAR', NOMBRE SUP. NVO.='" + sup.nombre + " " + sup.apellido + "', CÉD SUP. NVO.='" + sup.cedula + "'; ";
                }
                else if (cm_act.idSupervisor != -1 && dtgrdsup.Items.Count == 0)//Si hay viejo y no hay en nuevo
                {
                    txtdescbit += "NOMBRE SUP. ANT.='" + sp_act.nombre + " " + sp_act.apellido + "', CÉD SUP. ANT.='" + sp_act.cedula + "', NOMBRE SUP. NVO.='SIN ASIGNAR'; ";
                }

                Clases.C_Movimiento mov = new Clases.C_Movimiento();
                mov.idsupervisor = dtgrdsup.SelectedIndex != -1?sup.idSupervisor:-1;
                mov.idCamarera   = cam.idCamarera;
                mov.fecha        = DateTime.Today;

                if (mov.EditarMovSup() == 1)
                {
                    Console.WriteLine("Se modificó el supervisor");
                }
            }
            else
            {
                asg.EliminarAsignPorCamarera(cm_act.idCamarera);



                if (cm_act.idCamarera != cam.idCamarera)//Camareras distintas (anterior y nueva)
                {
                    txtdescbit += "NOMBRE CAM. ANT.='" + cm_act.nombre + " " + cm_act.apellido + "', CÉD CAM. ANT.='" + cm_act.cedula + "', NOMBRE CAM. NVA.='" + cam.nombre + " " + cam.apellido + "', CÉD CAM. NVA.='" + cam.cedula + "'; ";
                }
                else
                {
                    txtdescbit += "NOMBRE CAM.='" + cam.nombre + " " + cam.apellido + "', CÉD CAM.='" + cam.cedula + "'; ";
                }


                if (cm_act.idSupervisor != -1 && dtgrdsup.Items.Count != 0) //Si hay supervisores asignados en la base de datos (Viejo y Nuevo)
                {
                    if (sp_act.idSupervisor != sup.idSupervisor)            //Supervisores distinitos (anterior y nuevo)
                    {
                        txtdescbit += "NOMBRE SUP. ANT.='" + sp_act.nombre + " " + sp_act.apellido + "', CÉD SUP. ANT.='" + sp_act.cedula + "', NOMBRE SUP. NVO.='" + sup.nombre + " " + sup.apellido + "', CÉD SUP. NVO.='" + sup.cedula + "'; ";
                    }
                    else
                    {
                        txtdescbit += "NOMBRE SUP.='" + sup.nombre + " " + sup.apellido + "', CÉD SUP.='" + sup.cedula + "'; ";
                    }
                }
                else if (cm_act.idSupervisor == -1 && dtgrdsup.SelectedIndex >= 0)
                {//Si no hay en viejo y hay en nuevo
                    txtdescbit += "NOMBRE SUP. ANT.='SIN ASIGNAR', NOMBRE SUP. NVO.='" + sup.nombre + " " + sup.apellido + "', CÉD SUP. NVO.='" + sup.cedula + "'; ";
                }
                else if (cm_act.idSupervisor != -1 && dtgrdsup.Items.Count == 0)//Si hay viejo y no hay en nuevo
                {
                    txtdescbit += "NOMBRE SUP. ANT.='" + sp_act.nombre + " " + sp_act.apellido + "', CÉD SUP. ANT.='" + sp_act.cedula + "', NOMBRE SUP. NVO.='SIN ASIGNAR'; ";
                }



                if (hb_ds)
                {
                    txtdescbit += "HABS. ANT.=";
                    foreach (Clases.habitacionIqware h2 in hb_act)
                    {
                        txtdescbit += "'" + h2.RoomNo + "',";
                    }


                    txtdescbit  = txtdescbit.Remove(txtdescbit.Length - 1);
                    txtdescbit += "; ";
                }
                //----------------------------------------------------------------------------------//



                txtdescbit += "HABS. NVAS.=";//Bitácora


                foreach (Clases.habitacionIqware h in dtgrdhabsel.ItemsSource)
                {
                    txtdescbit += "'" + h.RoomNo + "',";//Bitácora

                    asg.idhabitacion = h.ID_Room;
                    asg.num_hab      = h.RoomNo;
                    asg.status_hab   = h.status;
                    asg.num_pax      = h.GuestTotal;
                    asg.modulo_hab   = h.modulo;
                    asg.tipo_hab     = h.RoomTypeShortName;
                    asg.idUsuario    = user.idUsuario;
                    asg.llegada      = h.llegada;
                    asg.salida       = h.salida;
                    asg.piso         = h.ID_Floor;
                    asg.Section      = h.Section;
                    asg.Guardar();
                }
            }

            asg.Modificar();

            //---------Bitácora -------------------------------------------//
            txtdescbit  = txtdescbit.Remove(txtdescbit.Length - 1);
            txtdescbit += ")";
            if (cm_act.idCamarera != cam.idCamarera || cm_act.idSupervisor != asg.idsupervisor || hb_ds)
            {
                Clases.Bitacora bit = new Clases.Bitacora(1, 2, txtdescbit, user.login);
                if (bit.Guardar() == 1)
                {
                    Console.WriteLine("Modificación de asignación guardada en la bitácora");
                }
            }
            //----------------------------------------------------//

            MessageBox.Show("Asignación modificada satisfactoriamente", "Completado", MessageBoxButton.OK, MessageBoxImage.Information);
            DialogResult = true;
            Close();
        }
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            if (dtgrdsumcamb.SelectedIndex != -1)
            {
                Clases.habitacionIqware hb = dtgrdhabsel.SelectedItem as Clases.habitacionIqware;
                Clases.C_Camarera       ca = dtgrdcam.SelectedItem as Clases.C_Camarera;
                Clases.C_Suministro     sm = dtgrdsumcamb.SelectedItem as Clases.C_Suministro;


                if (user.nivel != 0 && user.nivel != 1)
                {
                    MessageBox.Show("No poseen lo permisos para hacer esta acción", "Denegado", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }



                if (MessageBox.Show("Desea eliminar la pérdida de " + sm.descripcion + " de la lista?", "Confirmación", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    string texto = Microsoft.VisualBasic.Interaction.InputBox("Ingrese la observación", "Observación", "");//Modal pequeño para recopilar la observación


                    if (texto == "")
                    {
                        MessageBox.Show("Eliminación cancelada: Presionó botón 'Cancelar' o campo observación vacío", "Información", MessageBoxButton.OK, MessageBoxImage.Information);
                        return;
                    }



                    Clases.C_Perdida per = new Clases.C_Perdida();
                    per.idHabitacion = hb.ID_Room;
                    per.idCamarera   = ca.idCamarera;
                    per.idSuministro = sm.idSuministro;
                    per.hora         = ca.horamov;

                    Clases.C_Movimiento mov = new Clases.C_Movimiento();
                    mov.idSuministro = sm.idSuministro;
                    mov.idHabitacion = hb.ID_Room;
                    mov.fecha        = dtpFecha.SelectedDate;
                    mov.idCamarera   = ca.idCamarera;
                    mov.observacion  = texto;

                    if (mov.EditarMovPerdida() == 1)
                    {
                        Console.WriteLine("Modificada la observación en el movimiento");


                        //--------- Bitácora ------------------------//
                        txtdescbit = "ELIMINACIÓN DE PÉRDIDA ( FECHA='" + Convert.ToString(dtpFecha.SelectedDate).Replace(" 12:00:00 a.m.", "") + "' NR. HAB='" + hb.RoomNo + "', SUMINISTRO='" + sm.descripcion + "', CANTIDAD='" + sm.cantidad + "', OBSERVACION='" + texto.ToUpper() + "')";
                        Clases.Bitacora bit = new Clases.Bitacora(6, 3, txtdescbit, user.login);
                        if (bit.Guardar() == 1)
                        {
                            Console.WriteLine("Eliminación guardada en la bitácora");
                        }
                        //-------------------------------------------//
                    }



                    if (per.EliminarPerdida(Convert.ToDateTime(dtpFecha.SelectedDate)) == 1)       //Si la eliminación fue satisfactoria...
                    {
                        actualizar_dtgr_sum();                                                     //Se actualiza el datagrid de suministros (excluyendo el suministro que se caba de eliminar)
                        if (dtgrdsumcamb.ItemsSource == null && dtgrdhabsel.Items.Count > 1)       //Si se eliminaron todos los suministros de una habitación, y queda más de una habitación
                        {
                            actualizar_dtgr_habsel();                                              //Se actualiza el datagrid de habitaciones
                        }
                        else if (dtgrdsumcamb.ItemsSource == null && dtgrdhabsel.Items.Count == 1) //Si se eliminaron todos los suministros de una habitación, la cual es la que queda en el datagrid
                        {
                            dtgrdhabsel.ItemsSource = null;                                        //Se vacía el datagrid de habitaciones
                            actualizar_dtgr_cam();                                                 //y se actualiza el datagrid de camareras (excluyendo la fila de la camarera seleccionada, ya que no tiene pérdidas)
                        }
                        MessageBox.Show("Pérdida eliminada satisfactoriamente", "Información", MessageBoxButton.OK, MessageBoxImage.Information);
                        Clases.C_Camarera cm  = new Clases.C_Camarera();
                        DateTime          fch = dtpFecha.SelectedDate == null ? DateTime.Today : Convert.ToDateTime(dtpFecha.SelectedDate);
                        lcam = new List <Clases.C_Camarera>();
                        lcam = cm.PerCamPorFecha(fch);
                    }
                }
            }
        }