Ejemplo n.º 1
0
        public Quota_Standard CreationQuota(Quota_Standard quota)
        {
            try
            {
                /// Verifit si un Quota par defaut existe deja
                if (_context.Quota_Standard.Any())
                {
                    var _quota = _context.Quota_Standard.First();
                    _quota.Quantite          = quota.Quantite;
                    _quota.Quantite_Commerce = quota.Quantite_Commerce;
                    _context.SaveChanges();
                    return(_quota);
                }

                _context.Quota_Standard.Add(quota);
                _context.SaveChanges();
                return(quota);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Reinitialisation des quota
        /// </summary>
        /// <param name="dbcontext"></param>
        /// <param name="currentDate"></param>
        public void InitializeQuota(GestecoContext dbcontext, Historique_Initialisation_Quota currentDate)
        {
            using (var transaction = dbcontext.Database.BeginTransaction())
            {
                try
                {
                    var listQuota      = dbcontext.Quota.Where(p => p.IdQuota != -1);
                    var dtdebut        = new DateTime(DateTime.Now.Year, 1, 1);
                    var dtdefin        = new DateTime(DateTime.Now.Year, 12, 31);
                    var _quotaStandard = dbcontext.Quota_Standard.First();

                    foreach (var _quota in listQuota)
                    {
                        _quota.Quantite_Commerce   = _quotaStandard.Quantite_Commerce;
                        _quota.Quantite_Disponible = _quotaStandard.Quantite;
                        _quota.DateDebut           = dtdebut;
                        _quota.DateFin             = dtdefin;
                    }


                    currentDate = dbcontext.Historique_Initialisation_Quota.FirstOrDefault(p => p.DateEncours);

                    currentDate.DateEncours = false;

                    var quotaInit = new Historique_Initialisation_Quota
                    {
                        DateEncours = true,
                        DateInit    = DateTime.Now,
                        Description = string.Format("Quota initialization started on {0}", DateTime.Now)
                    };
                    dbcontext.Historique_Initialisation_Quota.Add(quotaInit);

                    dbcontext.SaveChanges();
                    transaction.CommitAsync();
                }
                catch (Exception ex)
                {
                    transaction.RollbackAsync();
                    _logger.LogDebug("Quota initialization  Fails {0}", ex.Message);
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        ///Le système doit permettre d’enregistrer une visite et de facturer le client
        /// en créant le client s'il n'exite pas
        /// en créant la provenance ,  la transaction et la liste des matieres de la visite
        /// et la fait la mise a jour des quota
        /// </summary>
        /// <param name="visite"></param>
        /// <returns></returns>
        public Visite CreateVisite(Visite visite)
        {
            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    /// le client s'il n'exite pas
                    visite.DateCreation = DateTime.Now;
                    bool Iscommerce = string.IsNullOrEmpty(visite.Client.NomCommerce);
                    if ((visite.IClient == 0) || (!_context.Client.Any(c => c.IdClient == visite.IClient)))
                    {
                        /// Creation du Client et entreprise
                        visite.Client.IdClient     = 0;
                        visite.Client.DateCreation = DateTime.Now;
                        _context.Client.Add(visite.Client);
                        _context.SaveChanges();
                    }
                    else
                    {
                        visite.Client = null;
                    }


                    /// Creation de l'adresse et  Quota
                    if (!string.IsNullOrEmpty(visite.Provenance.IdCivique))
                    {
                        /// Verifit si l'adresse existe
                        var adresse = _context.Adresse.FirstOrDefault(a => a.IdCivique == visite.Provenance.IdCivique);

                        if (adresse == null)
                        {
                            var _adresse = new Adresse
                            {
                                IdCivique = visite.Provenance.IdCivique,
                                Nom       = visite.Provenance.Adresse
                            };
                            _context.Adresse.Add(_adresse);
                            _context.SaveChanges();

                            /// Quota
                            var dtdebut = new DateTime(DateTime.Now.Year, 1, 1);
                            var dtdefin = new DateTime(DateTime.Now.Year, 12, 31);

                            var quotaStandard = _context.Quota_Standard.First();

                            var _quota = new Quota
                            {
                                IdCivique           = visite.Provenance.IdCivique,
                                DateDebut           = dtdebut,
                                DateFin             = dtdefin,
                                Quantite_Disponible = quotaStandard.Quantite,
                                Quantite_Initiale   = quotaStandard.Quantite,
                                Quantite_Commerce   = quotaStandard.Quantite_Commerce
                            };
                            _context.Quota.Add(_quota);
                            _context.SaveChanges();

                            visite.Provenance.Quantite_Disponible = string.IsNullOrWhiteSpace(visite.Client.NomCommerce)  ?_quota.Quantite_Disponible: _quota.Quantite_Commerce;
                        }
                    }

                    // Creation de la Provenance
                    /// Verification des Quota
                    /// Si une adresse officielle n’existe pas dans les bases de données  de la ville
                    visite.Provenance.Quantite_Initiale = visite.Provenance.Quantite_Disponible;

                    if (string.IsNullOrEmpty(visite.Provenance.IdCivique))
                    {
                        /// si le client ne montre pas une preuve de résidence
                        if (visite.Provenance.Quantite_Disponible > 0)
                        {
                            if (visite.Provenance.Quantite_Disponible > visite.Transaction.Volume)
                            {
                                visite.Provenance.Quantite_Disponible -= (long)visite.Transaction.Volume;
                                visite.Transaction.Quantite_Utilisee   = (long)visite.Transaction.Volume;
                                visite.Transaction.Volume              = 0;
                            }
                            else
                            {
                                visite.Transaction.Volume            -= visite.Provenance.Quantite_Disponible;
                                visite.Provenance.Quantite_Disponible = 0;
                                visite.Transaction.Quantite_Utilisee  = (long)visite.Transaction.Volume;
                            }
                        }
                    }
                    else
                    {
                        if (visite.Provenance.Quantite_Disponible > visite.Transaction.Volume)
                        {
                            visite.Provenance.Quantite_Disponible -= (long)visite.Transaction.Volume;
                        }
                        else
                        {
                            visite.Provenance.Quantite_Disponible = 0;
                        }
                    }

                    _context.Provenance.Add(visite.Provenance);
                    _context.SaveChanges();

                    /// Verification des Quota Cas Adressse Officielle
                    if (!string.IsNullOrEmpty(visite.Provenance.IdCivique))
                    {
                        var _quota = _context.Quota.FirstOrDefault(p => p.IdCivique == visite.Provenance.IdCivique);

                        if (_quota != null && _quota.DateFin >= DateTime.Now.Date)
                        {
                            long _qauntiteUtilise = 0;
                            /// Calcul du Volume facturable

                            if (!string.IsNullOrWhiteSpace(visite.Client.NomCommerce))
                            {
                                if (_quota.Quantite_Commerce > visite.Transaction.Volume)
                                {
                                    _quota.Quantite_Commerce -= (long)visite.Transaction.Volume;
                                    _qauntiteUtilise          = (long)visite.Transaction.Volume;
                                    visite.Transaction.Volume = 0;
                                }
                                else
                                {
                                    visite.Transaction.Volume -= _quota.Quantite_Commerce;
                                    _qauntiteUtilise           = (long)visite.Transaction.Volume;
                                    _quota.Quantite_Commerce   = 0;
                                }
                            }
                            else
                            {
                                if (_quota.Quantite_Disponible > visite.Transaction.Volume)
                                {
                                    _quota.Quantite_Disponible -= (long)visite.Transaction.Volume;
                                    _qauntiteUtilise            = (long)visite.Transaction.Volume;
                                    visite.Transaction.Volume   = 0;
                                }
                                else
                                {
                                    visite.Transaction.Volume -= _quota.Quantite_Disponible;
                                    _qauntiteUtilise           = (long)visite.Transaction.Volume;
                                    _quota.Quantite_Disponible = 0;
                                }
                            }
                            visite.Transaction.Quantite_Utilisee = _qauntiteUtilise;
                            _context.SaveChanges();

                            /// Enregistrement de l'historique des quota
                            var historiqueQuota = new Historique_Quota
                            {
                                DateHistorique    = DateTime.Now,
                                DateDebut         = _quota.DateDebut,
                                DateFin           = _quota.DateFin,
                                IdCivique         = _quota.IdCivique,
                                IdQuota           = _quota.IdQuota,
                                Quantite_Utilisee = _qauntiteUtilise,
                                Quantite_Initiale = visite.Provenance.Quantite_Initiale
                            };
                            _context.Historique_Quota.Add(historiqueQuota);
                            _context.SaveChanges();
                        }
                    }

                    /// Facturation  Chargement de la tarification
                    var tarif = _context.Tarification.First();
                    visite.Transaction.Total = Iscommerce ? visite.Transaction.Volume * tarif.Prix : visite.Transaction.Volume * tarif.Prix_Commerce;

                    /// On ne facture pas   lorsqu'il s'agit d'une nouvelle adresse

                    visite.Transaction.Total = string.IsNullOrEmpty(visite.Provenance.IdCivique) ? 0 : visite.Transaction.Total;
                    // Creation de la visite , Transaction et des Matiere de la visite
                    visite.IClient                  = visite.Client == null ? visite.IClient : visite.Client.IdClient;
                    visite.IdProvenance             = visite.Provenance.IdProvenance;
                    visite.Ecocentre                = null;
                    visite.Transaction.ModePaiement = null;

                    _context.Visite.Add(visite);
                    visite.Transaction.IdVisite = visite.IdVisite;
                    _context.Transaction.Add(visite.Transaction);

                    _context.SaveChanges();
                    transaction.CommitAsync();
                }
                catch (Exception ex)
                {
                    transaction.RollbackAsync();
                    throw ex;
                }
            }

            return(GetVisite(visite.IdVisite));
        }
Ejemplo n.º 4
0
        public static void Seed(GestecoContext context)
        {
            /// verifit s"il deja des donnee dans la table quota standard
            if (!context.Quota_Standard.Any())
            {
                var quota_Standard = new Quota_Standard
                {
                    Quantite          = 20,
                    Quantite_Commerce = 20
                };
                context.Quota_Standard.Add(quota_Standard);
                context.SaveChanges();
            }

            /// verifit s"il deja des donnee dans la table tarification
            if (!context.Tarification.Any())
            {
                var tarification = new Tarification
                {
                    Prix          = 11,
                    Prix_Commerce = 32
                };
                context.Tarification.Add(tarification);
                context.SaveChanges();
            }

            /// verifit s"il deja des donnee dans la table ModePaiement
            if (!context.ModePaiement.Any())
            {
                var modepaiement = new List <ModePaiement>
                {
                    new  ModePaiement  {
                        Nom = "Comptant"
                    },
                    new  ModePaiement  {
                        Nom = "Debit"
                    },
                    new  ModePaiement  {
                        Nom = "Credit"
                    },
                    new  ModePaiement  {
                        Nom = "Autres"
                    },
                };
                context.ModePaiement.AddRange(modepaiement);
                context.SaveChanges();
            }

            /// verifit s"il deja des donnee dans la table ModePaiement
            if (!context.Historique_Initialisation_Quota.Any())
            {
                var quotaInit = new Historique_Initialisation_Quota
                {
                    DateEncours = true,
                    DateInit    = DateTime.Now,
                    Description = "Initialisation de depart"
                };

                context.Historique_Initialisation_Quota.Add(quotaInit);
                context.SaveChanges();
            }
        }