Commit ddc10c08 authored by Dorchies David's avatar Dorchies David
Browse files

feat: validation

Refs #3
parent fcfe9197
# Generated by roxygen2: do not edit by hand
export(add_temps)
export(fdt_add_event)
export(fdt_isValidable)
export(fdt_valid)
export(get_user_id)
export(jump_to_mon_calendrier)
export(jump_to_pointage)
......
......@@ -15,9 +15,9 @@
#' \dontrun{
#' library(hatata)
#' session <- login("pnom", "my_password")
#' add_temps(session, "15/04/2021")
#' fdt_add_event(session, "15/04/2021")
#' }
add_temps <- function(
fdt_add_event <- function(
session,
date,
duree = "+07h44",
......
#' Check if the monthly time sheet can be validated
#'
#' Function used by [fdt_valid] before validation attempt.
#'
#' @inheritParams fdt_valid
#'
#' @return [logical] `TRUE` if the time sheet is ready for validation, `FALSE` otherwise
#' @export
#'
#' @examples
#' \dontrun{
#' library(hatata)
#' session <- login("pnom", "my_password")
#' fdt_valid(session, "15/04/2021")
#' }
fdt_isValidable <- function(session, date_validation) {
session <- jump_to_pointage(session, date = date_validation)
lForms <- rvest::html_form(session)
names(lForms) <- sapply(lForms, function(x) x$name)
f <- lForms[["form_update_report"]]
f$fields[[length(f$fields)]]$attr$id == "btn_save_report"
}
#' Monthly time sheet validation
#'
#' Returns an error if the time sheet is not ready for validation.
#'
#' @param session a [rvest::session] provided by [login] or [jump_to_mon_calendrier] functions
#' @param date_validation a [character] representing a date during the month to validate in format "%Y-%m-%d"
#'
#' @return the return of the [httr::POST] function
#' @export
#'
#' @examples
#' \dontrun{
#' library(hatata)
#' session <- login("pnom", "my_password")
#' fdt_valid(session, "15/04/2021")
#' }
fdt_valid <- function(session, date_validation) {
session <- jump_to_pointage(session, date = date_validation)
if(!fdt_isValidable(session, date_validation)) stop("The time sheet is not ready for validation. Check it on https://temps-activites.inrae.fr")
url <- gsub("action=showTempsTheorique", "action=updateReport", session$url)
cookies <- session$response$cookies$value
names(cookies) <- session$response$cookies$name
POST(url,
set_cookies(.cookies = cookies))
}
......@@ -18,7 +18,7 @@ jump_to_pointage <- function(session,
date = format(Sys.Date(), "%Y-%m-%d"),
user_id = get_user_id(session),
cfg = config::get(file = system.file("config.yml", package = "hatata"))) {
if(!inherits(session, "hatata_mon_calendrier")) {
if (!inherits(session, "hatata_mon_calendrier")) {
session <- jump_to_mon_calendrier(session)
}
date <- as.Date(date)
......@@ -26,7 +26,9 @@ jump_to_pointage <- function(session,
lastMonth <- format(lubridate::ceiling_date(date, "month") - 1, "%Y-%m-%d")
url <- sprintf(cfg$url_pointage, firstMonth, lastMonth, user_id)
session <- session %>% rvest::session_jump_to(url)
class(session) <- c("hatata_pointage", class(session))
if (!inherits(session, "hatata_pointage")) {
class(session) <- c("hatata_pointage", class(session))
}
attr(session, "user_id") <- user_id
session
}
......@@ -23,7 +23,7 @@ Chargement de la librarie&nbsp;:
library(hatata)
```
Pour saisir des temps dans [l'outil #temps](https://temps-activites.inra.fr/temps), il faut d'abord créer une variable de session contenant les identifiants de connexion.
Pour saisir des temps dans [l'outil #temps](https://temps-activites.inra.fr/temps), il faut d'abord créer une variable de session contenant les identifiants de connexion.
``` r
session <- login("mon_idenfiant_INRAE_pnom", "mon_mot_de_passe_INRAE")
......@@ -32,7 +32,13 @@ session <- login("mon_idenfiant_INRAE_pnom", "mon_mot_de_passe_INRAE")
Choisissez ensuite des dates sur lesquelles vous avez des régularisations à faire, exemple pour le 15 avril 2021 avec une journée de 7h44 en "heures normales"&nbsp;:
``` r
add_temps(session, "15/04/2021")
fdt_add_event(session, "15/04/2021")
```
Pour valider la feuille de temps mensuelle du mois d'avril 2021&nbsp;
``` r
fdt_valid(session, "01/04/2021")
```
# Roadmap
......@@ -42,6 +48,6 @@ Pour rendre cette application plus fonctionnelle, il manque les fonctionnalités
- Détection automatique des jours en défaut avant la date courante pour une présélection de dates à remplir automatiquement ([#2](https://gitlab.irstea.fr/david.dorchies/hatata/-/issues/2))
- Développement d'une interface Shiny pour les utilisateurs Lambda (Fonctionnalités à définir)
# Contribution
# Contribution
Toutes les contributions sont les bienvenues pour aboutir à un outil fonctionnel pour le plus grand nombre :)
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/add_temps.R
\name{add_temps}
\alias{add_temps}
% Please edit documentation in R/fdt_add_event.R
\name{fdt_add_event}
\alias{fdt_add_event}
\title{Add a day time in "Feuille de pointage"}
\usage{
add_temps(
fdt_add_event(
session,
date,
duree = "+07h44",
......@@ -36,6 +36,6 @@ Add a day time in "Feuille de pointage"
\dontrun{
library(hatata)
session <- login("pnom", "my_password")
add_temps(session, "15/04/2021")
fdt_add_event(session, "15/04/2021")
}
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/fdt_isValidable.R
\name{fdt_isValidable}
\alias{fdt_isValidable}
\title{Check if the monthly time sheet can be validated}
\usage{
fdt_isValidable(session, date_validation)
}
\arguments{
\item{session}{a \link[rvest:session]{rvest::session} provided by \link{login} or \link{jump_to_mon_calendrier} functions}
\item{date_validation}{a \link{character} representing a date during the month to validate in format "\%Y-\%m-\%d"}
}
\value{
\link{logical} \code{TRUE} if the time sheet is ready for validation, \code{FALSE} otherwise
}
\description{
Function used by \link{fdt_valid} before validation attempt.
}
\examples{
\dontrun{
library(hatata)
session <- login("pnom", "my_password")
fdt_valid(session, "15/04/2021")
}
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/fdt_valid.R
\name{fdt_valid}
\alias{fdt_valid}
\title{Monthly time sheet validation}
\usage{
fdt_valid(session, date_validation)
}
\arguments{
\item{session}{a \link[rvest:session]{rvest::session} provided by \link{login} or \link{jump_to_mon_calendrier} functions}
\item{date_validation}{a \link{character} representing a date during the month to validate in format "\%Y-\%m-\%d"}
}
\value{
the return of the \link[httr:POST]{httr::POST} function
}
\description{
Returns an error if the time sheet is not ready for validation.
}
\examples{
\dontrun{
library(hatata)
session <- login("pnom", "my_password")
fdt_valid(session, "15/04/2021")
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment