Пример #1
0
        private Task ChampsConformesAEtatCommande(Vérificateur vérificateur)
        {
            DétailCommandeVue détail   = vérificateur.VueDétail;
            Commande          commande = vérificateur.Commande;
            bool peutAjouterEtSupprimerDétailEtEditerDemande;
            bool peutEditerALivrer;

            if (vérificateur.EstClient)
            {
                peutAjouterEtSupprimerDétailEtEditerDemande = !commande.Date.HasValue;
                peutEditerALivrer = false;
            }
            else
            {
                peutAjouterEtSupprimerDétailEtEditerDemande = commande.Date.HasValue && commande.Date.Value.Ticks == 0 &&
                                                              (!commande.LivraisonNo.HasValue || !commande.Livraison.FactureNo.HasValue);
                peutEditerALivrer = commande.Date.HasValue && commande.LivraisonNo.HasValue && !commande.Livraison.Date.HasValue;
            }

            bool peutEditer = peutAjouterEtSupprimerDétailEtEditerDemande || peutEditerALivrer;

            if (!peutEditer)
            {
                vérificateur.Erreur = RésultatBadRequest("DétailNonEditable");
                return(Task.CompletedTask);
            }
            if (!peutEditerALivrer && détail.ALivrer.HasValue)
            {
                vérificateur.Erreur = RésultatBadRequest("ALivrerNonEditable");
                return(Task.CompletedTask);
            }
            return(Task.CompletedTask);
        }
Пример #2
0
        [ProducesResponseType(404)] // Not found
        public async Task <IActionResult> Lit([FromQuery] KeyUidRnoNo2 keyDétail)
        {
            CarteUtilisateur carte = await _utilisateurService.CréeCarteUtilisateur(HttpContext.User);

            if (carte == null)
            {
                // fausse carte
                return(Forbid());
            }

            bool estLeClient = await carte.EstActifEtAMêmeUidRno(AKeyUidRnoNo2.KeyUidRno_1(keyDétail).KeyParam);

            if (!estLeClient)
            {
                bool estFournisseur = await carte.EstActifEtAMêmeUidRno(AKeyUidRnoNo2.KeyUidRno_2(keyDétail).KeyParam);

                if (!estFournisseur)
                {
                    return(Forbid());
                }
            }

            DétailCommande détail = await _détailCommandeService.Lit(keyDétail.KeyParam);

            if (détail == null)
            {
                return(NotFound());
            }

            DétailCommandeVue vue = _détailCommandeService.CréeVue(détail);

            return(Ok(vue));
        }
Пример #3
0
        public async Task <DétailCommande> LitDétail(DétailCommandeVue vue)
        {
            DétailCommande détail = await _context.DétailCommande
                                    .Where(d => d.AMêmeKey(vue))
                                    .FirstOrDefaultAsync();

            return(détail);
        }
Пример #4
0
        [ProducesResponseType(409)] // Conflict
        public async Task <IActionResult> Detail(DétailCommandeVue vue)
        {
            CarteUtilisateur carte = await _utilisateurService.CréeCarteUtilisateur(HttpContext.User);

            if (carte == null)
            {
                // fausse carte
                return(Forbid());
            }

            KeyUidRno keySite = new KeyUidRno {
                Uid = vue.Uid2, Rno = vue.Rno
            };

            if (!await carte.EstActifEtAMêmeUidRno(keySite.KeyParam))
            {
                return(Forbid());
            }

            Commande commande = await _service.CommandeDeDétail(vue);

            if (commande == null)
            {
                return(NotFound());
            }

            if (!(await _service.EstDansSynthèseEnvoyée(commande)))
            {
                Erreurs.ErreurDeModel.AjouteAModelState(ModelState, "CommandeLivréeEtNonFacturée");
                return(BadRequest());
            }

            DétailCommande détail = await _service.LitDétail(vue);

            if (détail == null)
            {
                return(NotFound());
            }

            RetourDeService retour = await _service.EcritDétail(détail, vue);

            return(SaveChangesActionResult(retour));
        }
Пример #5
0
 public async Task <RetourDeService> EcritDétail(DétailCommande détail, DétailCommandeVue vue)
 {
     détail.AFacturer = vue.AFacturer;
     _context.DétailCommande.Update(détail);
     return(await SaveChangesAsync());
 }
Пример #6
0
        [ProducesResponseType(409)] // Conflict
        public async Task <IActionResult> Edite([FromQuery] ParamsEditeDétail paramsDétail, DétailCommandeVue vue)
        {
            Vérificateur vérificateur = new Vérificateur(vue, paramsDétail);
            await vérificateur.Vérifie(
                ClientDeLAction,
                UtilisateurEstClientOuFournisseur,
                EtatSiteChangé,
                DétailExiste,
                ChampsConformesAEtatCommande,
                PeutCommanderProduit,
                ChampsInterditsAbsents,
                ChampsPrésentsValides
                );

            if (vérificateur.Erreur != null)
            {
                return(vérificateur.Erreur);
            }

            RetourDeService <DétailCommande> retour = await _détailCommandeService.Edite(vérificateur.Détail, vue);

            return(SaveChangesActionResult(retour));
        }
Пример #7
0
        [ProducesResponseType(409)] // Conflict
        public async Task <IActionResult> Ajoute([FromQuery] ParamsEditeDétail paramsDétail, DétailCommandeVue vue)
        {
            Vérificateur vérificateur = new Vérificateur(vue, paramsDétail);
            await vérificateur.Vérifie(
                ClientDeLAction,
                UtilisateurEstClientOuFournisseur,
                EtatSiteChangé,
                CommandeExiste,
                DétailNExistePas,
                CommandeModifiable,
                PeutCommanderProduit,
                ChampsInterditsAbsents,
                ChampsRequisPrésents,
                ChampsPrésentsValides
                );

            if (vérificateur.Erreur != null)
            {
                return(vérificateur.Erreur);
            }

            RetourDeService <DétailCommande> retour = await _détailCommandeService.Ajoute(vue);

            if (retour.Ok)
            {
                return(CreatedAtAction(nameof(LitDétail), vérificateur.KeyDétail, retour.Entité));
            }

            return(SaveChangesActionResult(retour));
        }