Exemplo n.º 1
0
        public void AnadirTareas(Tareas ventanaTareas)
        {
            try
            {
                if (accesoDatos == null)
                {
                    accesoDatos = new AccesoFichador();
                }

                var valor   = (UsuariosListas)cBoxListadoAM.SelectedValue;
                var usuario = (UsuariosListas)cBoxListadoAM.SelectedItem;


                //TODO: He encontrado otra manera de hacer esto

                //--> var concatenacion = (DateDiaPickerAM.Value).Date + ((DateTime) radTimePickerHoraInicioAM.Value).TimeOfDay;

                //Si vais a utilizar el resultado de sumaDiayHora como DAtetime y no como string, devolver en la funcion datetime y os ahorrais el
                // casteo cada vez que la utiliceis
                //var concatenacion = accesoDatos.sumaDiaYHora(DateDiaPickerAM.Value, (DateTime)radTimePickerHoraInicioAM.Value));
                var concatenacion = (DateDiaPickerAM.Value).Date + ((DateTime)radTimePickerHoraInicioAM.Value).TimeOfDay;

                var nomTarea  = txtNombreTareaAM.Text;
                var descTarea = txtDescripcionAM.Text;

                //saca la duracion total de ese usuario y de esa fecha "concatenada"
                string minutosTrabajadosDia = accesoDatos.HorasTrabajadas(Convert.ToInt32(valor.ID), Convert.ToDateTime(concatenacion));
                //los minutos totales trabajados en ese dia y para ese usuario
                int minutosFichados = accesoDatos.obtenerHorasTrabajadasDiaFichador(DateDiaPickerAM.Value.ToString("d"), valor.ID);
                //que admita solo enteros el campo duracion:

                int dur = Convert.ToInt32(nmrDuracion.Value);

                //cada vez que le pongamos una duracion que nos lo sume en nuestra variable, para ir acumulandolo y poder controlarlo

                int sumaDurYminTrabajados = Convert.ToInt32(minutosTrabajadosDia) + dur;

                //saca el dia del pick
                var day = DateDiaPickerAM.Value.ToString("d");
                //saca nuestro ID:
                var sacaID = (UsuariosListas)cBoxListadoAM.SelectedValue;
                var ide    = accesoDatos.GetIDUsuarioByUserName(sacaID.nombre);

                //saca la hora y fecha  seleccionadas
                var horaDeComboBox = (DateTime)radTimePickerHoraInicioAM.Value;
                var horaDia        = horaDeComboBox.ToString("t");  //tengo hora del combobox, la que hayamos seleccionado, con formato 00:00

                var horaDelDia = Convert.ToDateTime(concatenacion); //convertido

                //saca la HoraInicio, dado el dia y su id
                var horaInicios = Convert.ToDateTime(accesoDatos.GetHoraInicioByDia(Convert.ToDateTime(day), ide));

                //saca HoraFin dado el dia y su id
                var horaFinal = Convert.ToDateTime(accesoDatos.GetHoraFinByDia(Convert.ToDateTime(day), ide));

                //si los minutos totales fichados(haber fichado y desfichado) son mayores o iguales que la suma de los minutos y duraciones que lo inserte
                //si tenemos 20 minutos fichados y hemos puesto duracion de 10 y luego de 5, si que las insertaria, porque 20>=10 y 20>=(10+5)

                if (minutosFichados == -1)
                {
                    MessageBox.Show("NO HAS TERMINADO DE FICHAR");
                }
                else if (minutosFichados < sumaDurYminTrabajados)
                {
                    MessageBox.Show("REVISAR MINUTOS DE LAS TAREAS");
                } //si se pasa y ya no se cumple no dejará insertar
                else if (horaDelDia < horaInicios || horaDelDia > horaFinal)
                {
                    MessageBox.Show("LA HORA ES INCORRECTA");
                }
                else if (dur == 0)
                {
                    MessageBox.Show(("NO PUEDES PONER VALOR 0 EN UNA TAREA"));
                }
                else
                {
                    accesoDatos.insertaTarea(Convert.ToDateTime(concatenacion), dur, nomTarea, descTarea, usuario.ID);
                }

                if (accesoDatos == null)
                {
                    accesoDatos = new AccesoFichador();
                }
                //  int resultado = accesoDatos.HorasTrabajadas();
                if (DatosFich != null)
                {
                    //hacemos el filtro comparando que el ID del user de la tabla Usuarios coincida con el del objeto de Fichador(el que hayamos seleccionado)
                    DatosFich.Where(user => user.IDUsuario == valor.ID).ToList();
                }
                var listas = accesoDatos.RellenaComboBox();
                cBoxListadoAM.DataSource = listas;
            }
            catch (Exception ex)
            {
                accesoDatos.guardarLog(ex.Message, 2);
            }
            accesoDatos.guardarLog("AñadirTareas correctamente realizado", 4);
        }