public async Task <ActionResult <TextResource> > Create(string org, string app, [FromBody] TextResource textResource)
        {
            try
            {
                if (!LanguageHelper.IsTwoLetters(textResource.Language))
                {
                    return(BadRequest("The language must be a two letter ISO language name."));
                }

                var existingTextResource = await _textRepository.Get(org, app, textResource.Language);

                if (existingTextResource != null)
                {
                    return(Conflict("Text resource allready exists."));
                }

                var createdObjected = await _textRepository.Create(org, app, textResource);

                return(Ok(createdObjected));
            }
            catch (Exception e)
            {
                _logger.LogError($"Unable to create text resource for {org}/{app}: {e.Message}");
                return(StatusCode(500, $"Unable to create text resource for {org}/{app}"));
            }
        }
Exemple #2
0
        /// <summary>
        /// Select an existing entry in the collection
        /// </summary>
        /// <typeparam name="T">The type of the object in the document</typeparam>
        /// <param name="id">The Int64 ID of the document</param>
        /// <returns>The object entry saved in the document</returns>
        public T Get <T>(long id) where T : class
        {
            var text = textRepository.Get(tag, id);

            return(text == null ? null :
                   TextConverter.ToObject <T>(text));
        }
Exemple #3
0
        public MichtavaResult Update(Text Text)
        {
            if (this.GetById(Text.Id) == null)
            {
                return(new MichtavaFailure("הטקסט לא נמצא במערכת"));
            }

            if (TextRepository.Get(s => s.Name == Text.Name).Count() > 1)
            {
                return(new MichtavaFailure());
            }

            if (TextRepository.Get(s => s.Name == Text.Name).Count() == 1 &&
                TextRepository.Get(s => s.Name == Text.Name).FirstOrDefault().Id != Text.Id)
            {
                return(new MichtavaFailure("כבר קיים טקסט במערכת עם אותו השם"));
            }



            if (TextRepository.Get(s => s.Name == Text.Name).Count() == 0)
            {
                this.TextRepository.Update(Text);
                this.TextRepository.SaveChanges();
                return(new MichtavaSuccess("טקסט עודכן בהצלחה"));
            }
            else
            {
                return(new MichtavaFailure("טעות לא צפויה התרחשה"));
            }
        }
Exemple #4
0
        public async Task <ActionResult> GetMessageBoxInstanceList(int instanceOwnerPartyId, [FromQuery] string state, [FromQuery] string language)
        {
            string[] allowedStates     = { "active", "archived", "deleted" };
            string[] acceptedLanguages = { "en", "nb", "nn" };

            string languageId = "nb";

            if (string.IsNullOrEmpty(state))
            {
                return(BadRequest($"State is empty. Please provide on of: {string.Join(", ", allowedStates)}"));
            }

            state = state.ToLower();
            if (!allowedStates.Contains(state))
            {
                return(BadRequest($"Invalid instance state. Please provide on of: {string.Join(", ", allowedStates)}"));
            }

            if (language != null && acceptedLanguages.Contains(language.ToLower()))
            {
                languageId = language;
            }

            List <Instance> allInstances = await _instanceRepository.GetInstancesInStateOfInstanceOwner(instanceOwnerPartyId, state);

            if (allInstances.Count <= 0)
            {
                return(Ok(new List <MessageBoxInstance>()));
            }

            // removing properties only used for active messageBoxInstances
            if (!state.Equals("active"))
            {
                allInstances.ForEach(i => i.DueBefore = null);
            }

            List <MessageBoxInstance> authorizedInstances =
                await _authorizationHelper.AuthorizeMesseageBoxInstances(HttpContext.User, allInstances);

            List <string> appIds = authorizedInstances.Select(i => InstanceHelper.GetAppId(i)).Distinct().ToList();

            List <TextResource> texts = await _textRepository.Get(appIds, languageId);

            InstanceHelper.ReplaceTextKeys(authorizedInstances, texts, languageId);

            return(Ok(authorizedInstances));
        }
Exemple #5
0
        public async Task <ActionResult <TextResource> > Create(string org, string app, [FromBody] TextResource textResource)
        {
            if (!LanguageHelper.IsTwoLetters(textResource.Language))
            {
                return(BadRequest("The language must be a two letter ISO language name."));
            }

            var existingTextResource = await _textRepository.Get(org, app, textResource.Language);

            if (existingTextResource != null)
            {
                return(Conflict("Text resource allready exists."));
            }

            var createdObjected = await _textRepository.Create(org, app, textResource);

            return(Ok(createdObjected));
        }
Exemple #6
0
 public bool Save(ITextRepository textRepository, string filepath)
 {
     try
     {
         using (System.IO.StreamWriter file =
                    new System.IO.StreamWriter(filepath))
         {
             foreach (var myText in textRepository.Get())
             {
                 file.WriteLine(myText.Name);
             }
         }
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }
Exemple #7
0
        public async Task <ActionResult <TextResource> > Get(string org, string app, string language)
        {
            try
            {
                if (!LanguageHelper.IsTwoLetters(language))
                {
                    return(BadRequest("The language must be a two letter ISO language name."));
                }

                TextResource textResource = await _textRepository.Get(org, app, language);

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

                return(Ok(textResource));
            }
            catch (Exception e)
            {
                _logger.LogError($"Unable to get text resource for {org}/{app}: {e.Message}");
                return(StatusCode(500, $"Unable to get text resource for {org}/{app}"));
            }
        }
Exemple #8
0
        public ActionResult <IEnumerable <TextListView> > GetTexts()
        {
            var texts = _repository.Get();

            return(Ok(texts));
        }
Exemple #9
0
        public async Task <ActionResult> SearchMessageBoxInstances(
            [FromQuery(Name = "instanceOwner.partyId")] int instanceOwnerPartyId,
            [FromQuery] string appId,
            [FromQuery] bool includeActive,
            [FromQuery] bool includeArchived,
            [FromQuery] bool includeDeleted,
            [FromQuery] string lastChanged,
            [FromQuery] string created,
            [FromQuery] string searchString,
            [FromQuery] string archiveReference,
            [FromQuery] string language)
        {
            string[] acceptedLanguages = { "en", "nb", "nn" };

            string languageId = "nb";

            if (language != null && acceptedLanguages.Contains(language.ToLower()))
            {
                languageId = language.ToLower();
            }

            Dictionary <string, StringValues> queryParams = QueryHelpers.ParseQuery(Request.QueryString.Value);

            if (!string.IsNullOrEmpty(archiveReference))
            {
                if ((includeActive == includeArchived) && (includeActive == includeDeleted))
                {
                    includeActive   = false;
                    includeDeleted  = true;
                    includeArchived = true;
                }
                else if (includeActive && !includeArchived && !includeDeleted)
                {
                    return(Ok(new List <MessageBoxInstance>()));
                }
                else if (includeActive && (includeArchived || includeDeleted))
                {
                    includeActive = false;
                }
            }

            GetStatusFromQueryParams(includeActive, includeArchived, includeDeleted, queryParams);
            queryParams.Add("sortBy", "desc:lastChanged");

            if (!string.IsNullOrEmpty(searchString))
            {
                StringValues applicationIds = await MatchStringToAppTitle(searchString);

                if (!applicationIds.Any() || (!string.IsNullOrEmpty(appId) && !applicationIds.Contains(appId)))
                {
                    return(Ok(new List <MessageBoxInstance>()));
                }
                else if (string.IsNullOrEmpty(appId))
                {
                    queryParams.Add("appId", applicationIds);
                }

                queryParams.Remove(nameof(searchString));
            }

            InstanceQueryResponse queryResponse = await _instanceRepository.GetInstancesFromQuery(queryParams, string.Empty, 100);

            if (queryResponse?.Exception != null)
            {
                if (queryResponse.Exception.StartsWith("Unknown query parameter"))
                {
                    return(BadRequest(queryResponse.Exception));
                }

                return(StatusCode(500, queryResponse.Exception));
            }

            if (queryResponse == null || queryResponse.Count <= 0)
            {
                return(Ok(new List <MessageBoxInstance>()));
            }

            List <Instance> allInstances = queryResponse.Instances;

            allInstances.RemoveAll(i => i.VisibleAfter > DateTime.UtcNow);

            allInstances.ForEach(i =>
            {
                if (i.Status.IsArchived || i.Status.IsSoftDeleted)
                {
                    i.DueBefore = null;
                }
            });

            List <MessageBoxInstance> authorizedInstances =
                await _authorizationHelper.AuthorizeMesseageBoxInstances(HttpContext.User, allInstances);

            List <string> appIds = authorizedInstances.Select(i => InstanceHelper.GetAppId(i)).Distinct().ToList();

            List <TextResource> texts = await _textRepository.Get(appIds, languageId);

            InstanceHelper.ReplaceTextKeys(authorizedInstances, texts, languageId);

            return(Ok(authorizedInstances));
        }