/// <summary> /// Asignamos el Operador a la Unidad /// </summary> /// <param name="id_operador">Id Operador</param> /// <param name="id_unidad">Id Unidad</param> /// <param name="fecha_inicio"> Fecha de Inicio</param> /// <param name="id_usuario">Id Usuario</param> /// <returns></returns> public static RetornoOperacion InsertaAsignacionOperadorAUnidad(int id_operador, int id_unidad, DateTime fecha_inicio, int id_usuario) { //Declaramos Objeto Resultado RetornoOperacion resultado = new RetornoOperacion(); //Editamos Id Operador de la Unidad using (Unidad objUnidad = new Unidad(id_unidad)) //Editamos Id Operador de la Unidad resultado = objUnidad.ActualizaOperadorAsignado(id_operador, fecha_inicio, id_usuario); //Si se actualizó correctamente if (resultado.OperacionExitosa) { //Armando Objeto de Parametros object[] param = { 1, 0, id_operador, id_unidad, Fecha.ConvierteDateTimeObjeto(fecha_inicio), null, id_usuario, true, "", "" }; //Realizando la actualización resultado = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoObjeto(_nombre_stored_procedure, param); //Si hay algún error if (!resultado.OperacionExitosa) { resultado = new RetornoOperacion("La fecha de Inicio de la nueva asignación se traslapa con alguna asignación previa o existe una asignación inconclusa."); } } //Devolvemos Resultado return(resultado); }
/// <summary> /// Finaliza la asignación en la fecha indicada /// </summary> /// <param name="fecha_fin">Fecha de Fin de asignación</param> /// <param name="id_usuario">Id de Usuario que actualiza</param> /// <returns></returns> public RetornoOperacion TerminaAsignacionOperadorUnidad(DateTime fecha_fin, int id_usuario) { //Declaramos Objeto Resultado sin errores RetornoOperacion resultado = new RetornoOperacion(this._id_asignacion_operador_unidad); //Validando que ambos recursos estén disponibles (tractor y operador) using (Operador o = new Operador(this._id_operador)) { using (Unidad u = new Unidad(this._id_unidad)) { //Si ambos elementos fueron encontrados if (o.habilitar && u.habilitar) { //Validando que su estatus sea disponible if ((o.estatus != Operador.Estatus.Disponible && o.estatus != Operador.Estatus.Registrado) || u.EstatusUnidad != Unidad.Estatus.ParadaDisponible) { resultado = new RetornoOperacion(string.Format("La unidad '{0}' y el operador '{1}' deben tener estatus disponible para terminar su asignación.", u.numero_unidad, o.nombre)); } //Si no hay problemas con su estatus if (resultado.OperacionExitosa) { //validando que la fecha de fin sea menor a la fecha de inicio de la asignación if (fecha_fin.CompareTo(this._fecha_inicio) >= 0) { //Se actualiza el Id de Operador asignado a la unidad resultado = u.ActualizaOperadorAsignado(0, fecha_fin, id_usuario); //Si se actualizó la unidad if (resultado.OperacionExitosa) { //Se termina la asignación actual resultado = editaAsignacionOperadorUnidad(this._id_operador, this._id_unidad, this._fecha_inicio, fecha_fin, id_usuario, this._habilitar); //Si hay algún error if (!resultado.OperacionExitosa) { resultado = new RetornoOperacion("La fecha de Fin de asignación se traslapa con alguna asignación previa."); } } } //De lo contrario else { resultado = new RetornoOperacion(string.Format("La fecha de fin '{0:dd/MM/yyyy HH:mm}' debe ser mayor a la fecha de inicio '{1:dd/MM/yyyy HH:mm}' de la asignación.", fecha_fin, this._fecha_inicio)); } } } else { resultado = new RetornoOperacion("La unidad o el operador no fueron localizados."); } } } //Devolvemos Resultado return(resultado); }