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; } }
/// <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); } } }
/// <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)); }
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(); } }