public ActionResult Create(int LanguageID, string Question, string Mandatory)
        {
            bool isMandatory = false;

            if (Mandatory != null)
            {
                isMandatory = true;
            }
            var success = true;
            var message = "Faq successfully created";

            using (var unit = GetUnitOfWork())
            {
                var UserID = Concentrator.Objects.Web.Client.User.UserID;

                var Faq = new Faq
                {
                    Mandatory            = isMandatory,
                    CreatedBy            = UserID,
                    CreationTime         = DateTime.Now,
                    LastModifiedBy       = UserID,
                    LastModificationTime = DateTime.Now
                };

                var FaqTranslation = new FaqTranslation
                {
                    Faq                  = Faq,
                    LanguageID           = LanguageID,
                    Question             = Question,
                    CreatedBy            = UserID,
                    CreationTime         = DateTime.Now.ToUniversalTime(),
                    LastModifiedBy       = UserID,
                    LastModificationTime = DateTime.Now.ToUniversalTime()
                };

                unit.Service <Faq>().Create(Faq);
                unit.Service <FaqTranslation>().Create(FaqTranslation);

                try
                {
                    unit.Save();
                }

                catch (Exception ex)
                {
                    success = false;
                    message = "Faq creation failed" + ex.Message;
                }

                return(Json(new
                {
                    success,
                    message
                }));
            }
        }
Exemple #2
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
        }
Exemple #3
0
 public async Task <int> Update(FaqTranslation faqTranslation)
 {
     return(await Context.SaveChangesAsync());
 }
Exemple #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));
        }
Exemple #5
0
 public async Task <int> Insert(FaqTranslation faqTranslation)
 {
     _faqTranslationRepository.Create(faqTranslation);
     return(await Context.SaveChangesAsync());
 }