public ActionResult <string> Put(Guid guid, [FromBody] UserConfigLanguage_Post model)
        {
            if (guid == Guid.Empty)
            {
                return(BadRequest("guid can not be empty"));
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest("model is incorrect due to:" + Environment.NewLine + GetModelStateErrors(ModelState)));
            }
            try
            {
                //find entity concerned with guid
                var user_language = context.UserConfiguredLanguages.FirstOrDefault(ul => ul.Guid == guid);
                if (user_language == null)
                {
                    return(NotFound($"unknown user configured language of guid: {guid}"));
                }
                //modify the entity fields
                //get the levels
                var speak_level = context.NiveauxParles.FirstOrDefault(np => np.Guid == model.speak_level_guid);
                if (speak_level == null)
                {
                    return(BadRequest("speak_level not recognized !"));
                }
                var write_level = context.NiveauxEcrits.FirstOrDefault(ne => ne.Guid == model.write_level_guid);
                if (write_level == null)
                {
                    return(BadRequest("write_level not recognized !"));
                }
                var understand_level = context.NiveauxComprehensions.FirstOrDefault(nc => nc.Guid == model.understand_level_guid);
                if (understand_level == null)
                {
                    return(BadRequest("understand_level not recognized !"));
                }
                user_language.NiveauParleGuid         = model.speak_level_guid;
                user_language.NiveauEcritGuid         = model.write_level_guid;
                user_language.NiveauComprehensionGuid = model.understand_level_guid;
                user_language.NiveauParle             = speak_level;
                user_language.NiveauEcrit             = write_level;
                user_language.NiveauComprehension     = understand_level;

                //update entity
                context.Entry(user_language).State = EntityState.Modified;
                context.SaveChanges();

                return(Ok(new UserConfigLanguage_Get()
                {
                    guid = user_language.Guid,
                    isAppLanguage = user_language.IsApplicationUserLanguage,
                    isCompulsoryLanguage = user_language.LanguageConcerned.IsCompulsoryToTheApplication,
                    language_name = user_language.LanguageConcerned.Name,
                    level_speak_name = user_language.NiveauParle.Name,
                    level_write_name = user_language.NiveauEcrit.Name,
                    level_understand_name = user_language.NiveauComprehension.Name
                }));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(StatusCode(417, "Error: " + e.Message + " " + Environment.NewLine + e.Source));
            }
        }
        public ActionResult <string> Post([FromBody] UserConfigLanguage_Post model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("model is incorrect due to:" + Environment.NewLine + GetModelStateErrors(ModelState)));
            }
            //create a userlanguage configuration instance
            //get language concerned
            try
            {
                var language = context.Languages.FirstOrDefault(l => l.Guid == model.language_guid);
                if (language == null)
                {
                    return(BadRequest("language not recognized !"));
                }
                //level concerned
                var level_write = context.NiveauxEcrits.FirstOrDefault(ne => ne.Guid == model.write_level_guid);
                if (level_write == null)
                {
                    return(BadRequest("write_level not recognized !"));
                }
                var level_speak = context.NiveauxParles.FirstOrDefault(np => np.Guid == model.speak_level_guid);
                if (level_speak == null)
                {
                    return(BadRequest("speak_level not recognized !"));
                }
                var level_understand = context.NiveauxComprehensions.FirstOrDefault(nc => nc.Guid == model.understand_level_guid);
                if (level_understand == null)
                {
                    return(BadRequest("understand_level not recognized !"));
                }

                //create user configured language
                var userLanguageConfig = new UserConfiguredLanguage()
                {
                    Guid                    = Guid.NewGuid(),
                    DateCreated             = DateTime.Now,
                    LastModifiedDate        = DateTime.Now,
                    LanguageGuid            = language.Guid,
                    LanguageConcerned       = language,
                    NiveauParleGuid         = level_speak.Guid,
                    NiveauEcritGuid         = level_write.Guid,
                    NiveauComprehensionGuid = level_understand.Guid,
                    NiveauParle             = level_speak,
                    NiveauEcrit             = level_write,
                    NiveauComprehension     = level_understand
                };
                //save configured language
                context.UserConfiguredLanguages.Add(userLanguageConfig);
                context.SaveChanges();
                return(Created($"{Url.Action("Get")}/{userLanguageConfig.Guid}", new UserConfigLanguage_Get()
                {
                    guid = userLanguageConfig.Guid,
                    isAppLanguage = userLanguageConfig.IsApplicationUserLanguage,
                    isCompulsoryLanguage = userLanguageConfig.LanguageConcerned.IsCompulsoryToTheApplication,
                    language_name = language.Name,
                    level_speak_name = level_speak.Name,
                    level_write_name = level_write.Name,
                    level_understand_name = level_understand.Name
                }));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(StatusCode(417, "Error: " + e.Message + " " + Environment.NewLine + e.Source));
            }
        }