コード例 #1
0
        [ProducesResponseType(409)] // Conflict
        public async Task <IActionResult> CopieDemP([FromQuery] KeyUidRnoNo keyProduit)
        {
            CarteUtilisateur carte = await _utilisateurService.CréeCarteUtilisateur(HttpContext.User);

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

            Site site = await _utile.SiteDeKeyProduitOuLivraison(keyProduit);

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

            bool estFournisseur = await carte.EstActifEtAMêmeUidRno(site.KeyParam);

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

            RetourDeService retour = await _service.CopieDemandes(site, keyProduit);

            if (retour == null)
            {
                return(RésultatBadRequest("RienACopier"));
            }

            return(SaveChangesActionResult(retour));
        }
コード例 #2
0
        /// <summary>
        /// retourne la livraison définie par la clé
        /// </summary>
        /// <param name="keyLivraison"></param>
        /// <returns>null si non trouvé</returns>
        private async Task <Livraison> LivraisonDeKey(KeyUidRnoNo keyLivraison)
        {
            Livraison livraison = await _context.Livraison
                                  .Where(l => l.Uid == keyLivraison.Uid && l.Rno == keyLivraison.Rno)
                                  .FirstOrDefaultAsync();

            return(livraison);
        }
コード例 #3
0
        public async Task <AKeyUidRnoNo> Facture(AKeyUidRno keySite, KeyUidRnoNo keyDocument)
        {
            Func <Commande, bool>       filtreCommandes = c => c.Uid == keyDocument.Uid && c.Rno == keyDocument.Rno;
            Func <DétailCommande, bool> filtreDétails   = d => d.AFacturer.HasValue && d.AFacturer.Value > 0;
            List <Commande>             commandes       = await _utile.CommandesAvecDétailsLivraisonEtFacture(filtreCommandes, filtreDétails, null, null)
                                                          .Where(c => c.Livraison != null && c.Livraison.Facture != null && c.Livraison.Facture.No == keyDocument.No && c.Livraison.Facture.Date.HasValue)
                                                          .ToListAsync();

            if (commandes.Count() == 0)
            {
                return(null);
            }
            List <DocumentCommande> documents = await DocumentCommandes(keySite, commandes, filtreDétails, avecDétails : true);

            return(DocumentsFactureTarif(commandes, documents).First());
        }
コード例 #4
0
        public async Task <IActionResult> ActionCommande([FromQuery] KeyUidRnoNo keyCommande, Func <Commande, Task <RetourDeService> > action)
        {
            CarteUtilisateur carte = await _utilisateurService.CréeCarteUtilisateur(HttpContext.User);

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

            KeyUidRno keyClient = new KeyUidRno {
                Uid = keyCommande.Uid, Rno = keyCommande.Rno
            };
            Site site = await _utile.SiteDeClient(keyClient);

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

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

            Commande commande = await _service.LitCommande(keyCommande);

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

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

            RetourDeService retour = await action(commande);

            return(SaveChangesActionResult(retour));
        }
コード例 #5
0
        private async Task <IActionResult> Document(KeyUidRnoNo keyDocument, Func <Site, KeyUidRnoNo, Task <AKeyUidRnoNo> > litDocument)
        {
            CarteUtilisateur carte = await _utilisateurService.CréeCarteUtilisateur(HttpContext.User);

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

            KeyUidRno keyClient = new KeyUidRno
            {
                Uid = keyDocument.Uid,
                Rno = keyDocument.Rno
            };

            Site site = await _utile.SiteDeClient(keyClient);

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

            if (!await carte.EstActifEtAMêmeUidRno(site.KeyParam))
            {
                // l'utilisateur n'est pas le fournisseur
                if (!carte.EstClient(site))
                {
                    return(Forbid());
                }
            }

            AKeyUidRnoNo document = await litDocument(site, keyDocument);

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

            return(Ok(document));
        }
コード例 #6
0
        public async Task <AKeyUidRnoNo> Commande(AKeyUidRno keySite, KeyUidRnoNo keyDocument)
        {
            bool filtreCommandes(Commande c) => c.Uid == keyDocument.Uid && c.Rno == keyDocument.Rno && c.No == keyDocument.No;
            bool filtreDétails(DétailCommande d) => d.Demande.HasValue;

            List <Commande> commandes = await _utile.CommandesAvecDétailsLivraisonEtFacture(filtreCommandes, filtreDétails, null, null).ToListAsync();

            if (commandes.Count() == 0)
            {
                return(null);
            }
            DocumentCommande commande = (await DocumentCommandes(keySite, commandes, filtreDétails, avecDétails: true)).First();

            commande.Détails = commande.Détails.Select(d => new DétailCommandeData
            {
                No           = d.No,
                TypeCommande = d.TypeCommande,
                Demande      = d.Demande
            }).ToList();
            return(commande);
        }
コード例 #7
0
        [ProducesResponseType(409)] // Conflict
        public async Task <IActionResult> AnnuleCommande([FromQuery] KeyUidRnoNo keyCommande)
        {
            Task <RetourDeService> action(Commande commande) => _service.AnnuleCommande(commande);

            return(await ActionCommande(keyCommande, action));
        }
コード例 #8
0
 /// <summary>
 /// Copie Demande dans AServir pour tous les DétailCommande demandant le produit dont la demande est copiable
 /// </summary>
 /// <param name="site"></param>
 /// <param name="keyProduit"></param>
 /// <returns>null s'il n'y a pas de détails copiables</returns>
 public async Task <RetourDeService> CopieDemandes(Site site, KeyUidRnoNo keyProduit)
 {
     return(await CopieDemandes(site, filtreClient : null, filtreProduit : p => p.No == keyProduit.No, filtreDétail : null));
 }
コード例 #9
0
 [ProducesResponseType(404)] // Not found
 public async Task <IActionResult> Facture([FromQuery] KeyUidRnoNo keyDocument)
 {
     return(await Document(keyDocument, (Site site, KeyUidRnoNo key) => _service.Facture(site, key)));
 }