Esempio n. 1
0
        public async Task <IActionResult> Insert([FromBody] FaqMeta faqMeta)
        {
            var result = await _faqService.Insert(CurrentUser.TenantId, CurrentUser.Id, CurrentUser.FullName, CurrentUser.Avatar, faqMeta);

            if (result.Code <= 0)
            {
                return(BadRequest(result));
            }
            return(Ok(result));
        }
Esempio n. 2
0
        public async Task <IActionResult> Update(string id, [FromBody] FaqMeta faqMeta)
        {
            var result = await _faqService.Update(CurrentUser.TenantId, CurrentUser.Id,
                                                  CurrentUser.FullName, CurrentUser.Avatar, id, faqMeta.IsQuickUpdate, faqMeta);

            if (result.Code <= 0)
            {
                return(BadRequest(result));
            }
            return(Ok(result));
        }
Esempio n. 3
0
        public async Task <ActionResultResponse <string> > Insert(string tenantId, string creatorId, string creatorFullName, string creatorAvata,
                                                                  FaqMeta faqMeta)
        {
            var faqId     = Guid.NewGuid().ToString();
            var infoGroup = await _faqGroupRepository.GetInfo(faqMeta.FaqGroupId.Trim());

            if (infoGroup == null)
            {
                return(new ActionResultResponse <string>(-1, _websiteResourceService.GetString("Faq group does not exists.")));
            }

            // Insert new Faq.
            var resultInsertFaq = await _faqRepository.Insert(new Faq
            {
                Id = faqId,
                ConcurrencyStamp = faqId.Trim(),
                FaqGroupId       = faqMeta.FaqGroupId.Trim(),
                Photo            = faqMeta.Photo?.Trim(),
                Order            = faqMeta.Order,
                IsActive         = faqMeta.IsActive,
                TenantId         = tenantId,
                CreatorId        = creatorId,
                CreatorFullName  = creatorFullName
            });

            if (resultInsertFaq <= 0)
            {
                return(new ActionResultResponse <string>(resultInsertFaq,
                                                         _sharedResourceService.GetString(ErrorMessage.SomethingWentWrong)));
            }

            #region insert Faq Translation.

            if (faqMeta.Translations.Count > 0)
            {
                var resultInsertTranslation = await InsertFaqTranslation();

                if (resultInsertTranslation.Code <= 0)
                {
                    return(resultInsertTranslation);
                }
            }
            #endregion

            return(new ActionResultResponse <string>(1,
                                                     _websiteResourceService.GetString("Add new faq successful."),
                                                     string.Empty, faqId));

            #region Local functions

            async Task <ActionResultResponse <string> > InsertFaqTranslation()
            {
                var faqTranslations = new List <FaqTranslation>();

                foreach (var faqTranslation in faqMeta.Translations)
                {
                    // Check name exists.
                    var isNameExists = await _faqTranslationRepository.CheckExists(faqId, tenantId,
                                                                                   faqTranslation.LanguageId, faqTranslation.Question);

                    if (isNameExists)
                    {
                        await RollbackInsertFaq();

                        return(new ActionResultResponse <string>(-2, _websiteResourceService.GetString(
                                                                     "Question: \"{0}\" already exists.",
                                                                     faqTranslation.Question)));
                    }

                    var faqTranslationInsert = new FaqTranslation
                    {
                        TenantId   = tenantId,
                        FaqId      = faqId,
                        LanguageId = faqTranslation.LanguageId.Trim(),
                        Question   = faqTranslation.Question.Trim(),
                        Answer     = faqTranslation.Answer?.Trim()
                    };

                    faqTranslations.Add(faqTranslationInsert);
                }

                // Insert Faq translations.
                var resultInsertTranslation = await _faqTranslationRepository.Inserts(faqTranslations);

                if (resultInsertTranslation > 0)
                {
                    return(new ActionResultResponse <string>(resultInsertFaq,
                                                             _websiteResourceService.GetString("Add new faq translation successful."), string.Empty,
                                                             faqId));
                }

                await RollbackInsertFaqTranslation();
                await RollbackInsertFaq();

                return(new ActionResultResponse <string>(-3,
                                                         _websiteResourceService.GetString(
                                                             "Can not insert new faq . Please contact with administrator.")));
            }

            async Task RollbackInsertFaq()
            {
                await _faqRepository.ForceDelete(faqId);
            }

            async Task RollbackInsertFaqTranslation()
            {
                await _faqTranslationRepository.ForceDelete(faqId);
            }

            #endregion
        }
Esempio n. 4
0
        public async Task <ActionResultResponse <string> > Update(string tenantId, string lastUpdateUserId, string lastUpdateFullName, string lastUpdateAvata,
                                                                  string faqId, bool isQuickUpdate, FaqMeta faqMeta)
        {
            var info = await _faqRepository.GetInfo(faqId);

            if (info == null)
            {
                return(new ActionResultResponse <string>(-1, _websiteResourceService.GetString("Faq does not exists.")));
            }

            if (info.TenantId != tenantId)
            {
                return(new ActionResultResponse <string>(-2, _sharedResourceService.GetString(ErrorMessage.NotHavePermission)));
            }

            if (info.ConcurrencyStamp != faqMeta.ConcurrencyStamp)
            {
                return(new ActionResultResponse <string>(-3, _websiteResourceService.GetString("The faq already updated by other people. You can not update this Faq .")));
            }

            var infoGroup = await _faqGroupRepository.GetInfo(faqMeta.FaqGroupId.Trim());

            if (infoGroup == null)
            {
                return(new ActionResultResponse <string>(-4, _websiteResourceService.GetString("Faq group does not exists.")));
            }

            info.IsActive           = faqMeta.IsActive;
            info.FaqGroupId         = faqMeta.FaqGroupId;
            info.Photo              = faqMeta.Photo;
            info.Order              = faqMeta.Order;
            info.ConcurrencyStamp   = Guid.NewGuid().ToString();
            info.LastUpdate         = DateTime.Now;
            info.LastUpdateUserId   = lastUpdateUserId;
            info.LastUpdateFullName = lastUpdateFullName;

            await _faqRepository.Update(info);

            //udpate translate
            if (!isQuickUpdate)
            {
                foreach (var faqTranslation in faqMeta.Translations)
                {
                    var isNameExists = await _faqTranslationRepository.CheckExists(info.Id, tenantId,
                                                                                   faqTranslation.LanguageId, faqTranslation.Question);

                    if (isNameExists)
                    {
                        return(new ActionResultResponse <string>(-5, _websiteResourceService.GetString("Question: \"{0}\" already exists.", faqTranslation.Question)));
                    }

                    var faqTranslationInfo =
                        await _faqTranslationRepository.GetInfo(tenantId, faqTranslation.LanguageId, faqId);

                    if (faqTranslationInfo != null)
                    {
                        faqTranslationInfo.Question = faqTranslation.Question.Trim();
                        faqTranslationInfo.Answer   = faqTranslation.Answer?.Trim();
                        await _faqTranslationRepository.Update(faqTranslationInfo);
                    }
                    else
                    {
                        var faqTranslationInsert = new FaqTranslation
                        {
                            FaqId      = faqId,
                            LanguageId = faqTranslation.LanguageId.Trim(),
                            Question   = faqTranslation.Question.Trim(),
                            Answer     = faqTranslation.Answer?.Trim()
                        };
                        await _faqTranslationRepository.Insert(faqTranslationInsert);
                    }
                }
            }
            return(new ActionResultResponse <string>(1, _websiteResourceService.GetString("Update faq successful."), "", info.ConcurrencyStamp));
        }