/// <summary> /// Retourne un message d'erreur si le numéro de tiers de l'écriture courante est invalide. /// </summary> /// <param name="repository"> Le repository permettant les appels API. </param> /// <param name="companyId"> La société concernée par les appels API. </param> /// <returns> Une chaîne indiquant l'erreur si le numéro de tiers est invalide. </returns> public void ControlNoTiers(APIRepository repository, Dictionary <string, string> existingCompte, Dictionary <string, string> existingInconnuCompte, List <string> errors) { if (string.IsNullOrEmpty(this.NumeroTiers) || existingCompte.ContainsKey(this.NumeroTiers)) { return; } if (existingInconnuCompte.ContainsKey(this.NumeroTiers)) { errors.Add("Le numéro de tiers '" + this.NumeroTiers + "' est inconnu."); return; } Dictionary <string, string> options = new Dictionary <string, string>(); options.Add("$top", "1"); options.Add("$filter", "numero eq '" + this.NumeroTiers + "'"); var resultat = repository.Get(repository.CompanyId, "tiers", options).GetJSONResult()["value"]; if (!resultat.HasValues) { errors.Add("Le numéro de tiers '" + this.NumeroTiers + "' est inconnu."); existingInconnuCompte.Add(this.NumeroTiers, ""); } else { existingCompte.Add(this.NumeroTiers, resultat[0]["id"].ToString()); } }
/// <summary> /// Controle si le numero de Tiers saisi existe et si oui retourne un message d'erreur /// </summary> /// <param name="numero"> Le compte tiers à tester </param> /// <param name="repository">Le repository </param> /// <returns>Un string avec le message formaté si le tiers existe déjà ou une chaine vide si inexistant</returns> private string ControlTiersAlreadyExist(string numero, APIRepository repository) { Dictionary <string, string> options = new Dictionary <string, string>(); options.Add("$filter", "numero eq '" + numero.ToUpper() + "'"); options.Add("$select", "numero,intitule,adresse,type"); var result = repository.Get(repository.CompanyId, "tiers", options); if (!Tools.IsSuccess(result)) { return("ERROR:" + Tools.FormateErrorApi(result)); } var values = result.GetJSONResult()["value"]; if (!values.HasValues) { return(""); } return(Resource.CLIENT_ALREADY_EXIST. Replace("{numero}", "<b>" + values[0]["numero"].ToString() + "</b>"). Replace("{intitule}", "<b>" + values[0]["intitule"].ToString() + "</b>"). Replace("{type}", "<b>" + values[0]["type"].ToString() + "</b>")); }
/// <summary> /// Retourne un message d'erreur si le compte général de l'écriture courante est invalide. /// </summary> /// <param name="repositor /// y"> Le repository permettant les appels API. </param> /// <param name="companyId"> La société concernée par les appels API. </param> /// <returns> Un message d'erreur si le compte général de l'écriture comptable courante est invalide. </returns> public void ControlGeneralAccount(APIRepository repository, Dictionary <string, string> existingCompte, Dictionary <string, string> existingInconnuCompte, List <string> errors) { if (existingCompte.ContainsKey(this.Compte)) { return; } if (existingInconnuCompte.ContainsKey(this.Compte)) { errors.Add("Le numéro de compte '" + this.Compte + "' est inconnu."); return; } Dictionary <string, string> options = new Dictionary <string, string>(); options.Add("$top", "1"); options.Add("$filter", "numero eq '" + this.Compte + "'"); var resultat = repository.Get(repository.CompanyId, "comptes", options).GetJSONResult()["value"]; if (!resultat.HasValues) { errors.Add("Le numéro de compte '" + this.Compte + "' est inconnu."); existingInconnuCompte.Add(this.Compte, ""); } else { existingCompte.Add(this.Compte, resultat[0]["id"].ToString()); } }
/// <summary> /// Récupération des paramètres (type comptes généraux, pays). Alimente les propriétés de ViewBag. /// </summary> /// <param name="repository">Repository courant</param> public void LoadParameters(APIRepository repository) { Dictionary <string, string> options = new Dictionary <string, string>(); //Liste des comptes généraux commençant par 41 options.Clear(); options.Add("$select", "id,type,numero"); options.Add("$filter", "startswith(numero,'41') and sommeil eq false"); options.Add("$orderby", "numero"); ViewBag.Accounts = repository.Get(repository.CompanyId, "comptes", options).GetJSONResult()["value"]; //Liste des pays options.Clear(); options.Add("$select", "intitule"); options.Add("$orderby", "intitule"); ViewBag.Pays = repository.Get(repository.CompanyId, "pays", options).GetJSONResult()["value"]; }
public void TestMethod1() { IRepository <Post> repo = new LocalRepository <Post>("posts.json"); Assert.AreEqual(repo.Get().Count(), 100); repo = new APIRepository <Post>("https://jsonplaceholder.typicode.com/posts"); Assert.AreEqual(repo.Get().Count(), 100); }
/// <summary> /// Récupère un objet Customer selon un id donné. /// </summary> /// <param name="id"> L'id du client à récupérer. </param> /// <param name="repository"> Le repository. </param> /// <returns>Un objet Customer.</returns> public Customer GetCustomerById(string id, APIRepository repository) { // Construction de la requête OData afin de récupérer le client correspondant. Dictionary <string, string> options = new Dictionary <string, string>(); var expand = "comptePrincipal($select=id,numero)"; options.Add("$expand", expand); var result = repository.Get(repository.CompanyId, "clients", options, id); if (!Tools.IsSuccess(result)) { return(new Customer(new Address(), new Telecom())); } Customer customer = Tools.ConvertToCustomer(result.GetJSONResult()); return(customer); }
/// <summary> /// Traite les données du formulaire. /// </summary> /// <param name="repository"> Le repository permettant d'accéder aux données de l'API. </param> /// <param name="model"> Les données du formulaire. </param> private void ExecuteRequest(APIRepository repository, Request model) { Dictionary <string, string> options = new Dictionary <string, string>(); Dictionary <string, string> parameters = new Dictionary <string, string> { { "$expand", model.Expand }, { "$filter", model.Filter }, { "$select", model.Select }, { "$orderby", model.Orderby }, { "$top", model.Top }, { "$skip", model.Skip }, { "$count", model.Count } }; foreach (var parameter in parameters) { if (!string.IsNullOrEmpty(parameter.Value) && !string.IsNullOrWhiteSpace(parameter.Value)) { options.Add(parameter.Key, parameter.Value); } } var result = repository.Get(model.Company, model.Resource, options, model.ResourceId, model.Subresource); var data = Tools.GetJSONResult(result); //Tout ce qui est en dessous sert uniquement à formater l'affichage de la réponse dans le formulaire. //Dans le contexte de l'onglet requête on n'utilise pas le retour standard erreur on laisse le code retour s'afficher dans la réponse. model.RespStatusCode = (int)result.StatusCode; model.RespStatusMessage = result.StatusCode.ToString(); if (data.HasValues) { model.RespCount = (data.ContainsKey("value")) ? data["value"].Count() : 1; } else { model.RespCount = 0; } dynamic parsedJson = JsonConvert.DeserializeObject(data.ToString()); model.RespBody = JsonConvert.SerializeObject(parsedJson, Newtonsoft.Json.Formatting.Indented); }
public API GetAPI(int id) { return(apiRepo.Get(id)); }
/// <summary> /// Lecture des informations à ne pas relire à chaque contrôle d'une nouvelle ligne /// </summary> /// <param name="repository"></param> /// <returns>Objet Import contenant les informations</returns> private Import ReadParameters(APIRepository repository) { // Récupération des codes journaux, ces codes journaux seront accessibles en les recherchant directement par leurs indices (code). Dictionary <string, string> options = new Dictionary <string, string>(); options.Add("$expand", "compte"); options.Add("$select", "code,id,optContrepartie,compte"); var result = repository.Get(repository.CompanyId, "journaux", options); if (!Tools.IsSuccess(result)) { return new Import { ErrorMessage = Tools.FormateErrorApi(result) } } ; var journaux = result.GetJSONResult()["value"]; Dictionary <string, JournalCache> codes = new Dictionary <string, JournalCache>(); foreach (var journal in journaux) { codes.Add(journal["code"].ToString(), JournalCache.Create(journal)); } // Récupération des intitules de modes de réglements. options.Clear(); options.Add("$select", "intitule,id"); result = repository.Get(repository.CompanyId, "modesReglement", options); if (!Tools.IsSuccess(result)) { return new Import { ErrorMessage = Tools.FormateErrorApi(result) } } ; var modesReglement = result.GetJSONResult()["value"]; Dictionary <string, string> intitulesModesReglement = new Dictionary <string, string>(); foreach (var mode in modesReglement) { intitulesModesReglement.Add(mode["intitule"].ToString(), mode["id"].ToString()); } // Récupération des informations de la société afin d'obtenir les dates d'exercices. options.Clear(); options.Add("$select", "exercices($select=dateDebut,dateFin;$filter=cloture eq false;$orderby=dateDebut desc;$top=1)"); result = repository.Get(repository.CompanyId, "company", options); if (!Tools.IsSuccess(result)) { return new Import { ErrorMessage = Tools.FormateErrorApi(result) } } ; var company = result.GetJSONResult(); var exerciceStartDate = (DateTime)company["exercices"][0]["dateDebut"]; var exerciceEndDate = (DateTime)company["exercices"][0]["dateFin"]; //Structure pour tampon des comptes déjà lus, sera alimenté au fur et à mesure du parcours des lignes Dictionary <string, string> comptes = new Dictionary <string, string>(); Dictionary <string, string> inconnuComptes = new Dictionary <string, string>(); return(new Import { Codes = codes, ExerciceStartDate = exerciceStartDate, ExerciceEndDate = exerciceEndDate, IntitulesModesReglement = intitulesModesReglement, Comptes = comptes, InconnuComptes = inconnuComptes, ErrorMessage = null }); } } }