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); }