Beispiel #1
0
 private async Task <ProviderNew> MappingProvider(ProviderNew pro, NewsProviderViewModel vm, string currentUserContext)
 {
     pro.Author = vm.Author;
     pro.Status = (await _checkUserIsAdminQuery.ExecuteAsync(currentUserContext) ||
                   await _getPermissionActionQuery.ExecuteAsync(currentUserContext, ConstantFunctions.NEWS, ActionSetting.CanUpdate)) ?
                  Status.WaitingApprove : Status.Pending;
     pro.Author       = vm.Author;
     pro.ProviderId   = Guid.Parse(vm.ProviderId);
     pro.Title        = vm.Title;
     pro.Content      = vm.Content;
     pro.DateModified = DateTime.Now;
     pro.ImgPath      = vm.ImgPath;
     return(pro);
 }
        private NewsProviderViewModel MappingProvider(ProviderNew vm)
        {
            NewsProviderViewModel pro = new NewsProviderViewModel();

            pro.Id           = vm.Id;
            pro.Author       = vm.Author;
            pro.Status       = vm.Status;
            pro.Author       = vm.Author;
            pro.ProviderId   = vm.ProviderId.ToString();
            pro.Title        = vm.Title;
            pro.Content      = vm.Content;
            pro.DateModified = DateTime.Now;
            return(pro);
        }
Beispiel #3
0
        public async Task <CommandResult <NewsProviderViewModel> > ExecuteAsync(NewsProviderViewModel vm)
        {
            var userId   = _httpContext.HttpContext.User.Identity.Name;
            var userName = _userManager.FindByIdAsync(userId).Result.UserName;

            try
            {
                var findProviderNew = await _providerNewsRepository.FindByIdAsync(vm.Id);

                if (findProviderNew != null)
                {
                    var getIsProvider = await _checkUserIsProviderQuery.ExecuteAsync(userId);

                    if (await _checkUserIsAdminQuery.ExecuteAsync(userId) ||
                        await _getPermissionActionQuery.ExecuteAsync(userId, ConstantFunctions.NEWS, ActionSetting.CanUpdate) ||
                        (getIsProvider.isValid && getIsProvider.myModel.Id == findProviderNew.ProviderId.ToString()))
                    {
                        var mappingNewsProvider = await MappingProvider(findProviderNew, vm, userId);

                        _providerNewsRepository.Update(mappingNewsProvider);
                        await _providerNewsRepository.SaveAsync();

                        await Logging <UpdateNewsProviderServiceCommand> .
                        InformationAsync(ActionCommand.COMMAND_UPDATE, userName, mappingNewsProvider.Author + "had been updated");

                        //Get Provider Information
                        var providerInformation = await _providerRepository.FindByIdAsync(Guid.Parse(vm.ProviderId));

                        var findUser = await _userManager.FindByIdAsync(providerInformation.UserId.ToString());

                        //Set content for email
                        var getEmailContent = await _getAllEmailServiceQuery.ExecuteAsync();

                        var generateCode = _configuration.GetSection("Host").GetSection("LinkConfirmNewsProvider").Value +
                                           mappingNewsProvider.CodeConfirm + '_' + mappingNewsProvider.Id;

                        var getFirstEmail = getEmailContent.Where(x => x.Name == EmailName.Approve_News).FirstOrDefault();
                        getFirstEmail.Message = getFirstEmail.Message.Replace(EmailKey.UserNameKey, findUser.Email).
                                                Replace(EmailKey.ConfirmLink, generateCode);

                        ContentEmail(_config.Value.SendGridKey, getFirstEmail.Subject,
                                     getFirstEmail.Message, findUser.Email).Wait();
                        return(new CommandResult <NewsProviderViewModel>
                        {
                            isValid = true,
                            myModel = vm
                        });
                    }
                    else
                    {
                        await Logging <UpdateNewsProviderServiceCommand> .
                        WarningAsync(ActionCommand.COMMAND_UPDATE, userName, ErrorMessageConstant.ERROR_UPDATE_PERMISSION);

                        return(new CommandResult <NewsProviderViewModel>
                        {
                            isValid = false,
                            errorMessage = ErrorMessageConstant.ERROR_UPDATE_PERMISSION
                        });
                    }
                }
                else
                {
                    await Logging <UpdateNewsProviderServiceCommand> .
                    WarningAsync(ActionCommand.COMMAND_UPDATE, userName, ErrorMessageConstant.ERROR_CANNOT_FIND_ID);

                    return(new CommandResult <NewsProviderViewModel>
                    {
                        isValid = false,
                        errorMessage = ErrorMessageConstant.ERROR_CANNOT_FIND_ID
                    });
                }
            }
            catch (System.Exception ex)
            {
                await Logging <UpdateNewsProviderServiceCommand> .
                ErrorAsync(ex, ActionCommand.COMMAND_UPDATE, userName, "Has error");

                return(new CommandResult <NewsProviderViewModel>
                {
                    isValid = false,
                    errorMessage = ex.InnerException.ToString()
                });
            }
        }
        public async Task <IActionResult> UpdateNewsProvider(NewsProviderViewModel vm)
        {
            var model = await _updateNewsProviderServiceCommand.ExecuteAsync(vm);

            return(new OkObjectResult(model));
        }
        public async Task <CommandResult <NewsProviderViewModel> > ExecuteAsync(NewsProviderViewModel vm)
        {
            var userId   = _httpContextAccessor.HttpContext.User.Identity.Name;
            var userName = _userManager.FindByIdAsync(userId).Result.UserName;

            try
            {
                var getIsProvider = await _checkUserIsProviderQuery.ExecuteAsync(userId);

                if (await _checkUserIsAdminQuery.ExecuteAsync(userId) ||
                    await _getPermissionActionQuery.ExecuteAsync(userId, ConstantFunctions.NEWS, ActionSetting.CanCreate) ||
                    getIsProvider.isValid)
                {
                    var mappingProvider = await MappingProvider(vm, Guid.Parse(vm.ProviderId), userId);

                    mappingProvider.CodeConfirm = RandomCodeSupport.RandomString(6);
                    await _newProviderRepository.Add(mappingProvider);

                    await _newProviderRepository.SaveAsync();

                    vm.Id     = mappingProvider.Id;
                    vm.Status = mappingProvider.Status;
                    await Logging <RegisterNewsProviderServiceCommand> .
                    InformationAsync(ActionCommand.COMMAND_ADD, userName, JsonConvert.SerializeObject(vm));

                    //Send mail confirm
                    //Get Provider Information
                    var providerInformation = await _providerRepository.FindByIdAsync(Guid.Parse(vm.ProviderId));

                    var findUser = await _userManager.FindByIdAsync(providerInformation.UserId.ToString());

                    //Set content for email
                    var getEmailContent = await _getAllEmailServiceQuery.ExecuteAsync();

                    if (getIsProvider.isValid)
                    {
                        var getFirstEmail = getEmailContent.Where(x => x.Name == EmailName.Receive_Register_News).FirstOrDefault();
                        getFirstEmail.Message = getFirstEmail.Message.Replace(EmailKey.UserNameKey, findUser.Email);

                        ContentEmail(_config.Value.SendGridKey, getFirstEmail.Subject,
                                     getFirstEmail.Message, findUser.Email).Wait();
                    }
                    else
                    {
                        var generateCode = _configuration.GetSection("Host").GetSection("LinkConfirmNewsProvider").Value +
                                           mappingProvider.CodeConfirm + '_' + mappingProvider.Id;

                        var getFirstEmail = getEmailContent.Where(x => x.Name == EmailName.Approve_News).FirstOrDefault();
                        getFirstEmail.Message = getFirstEmail.Message.Replace(EmailKey.UserNameKey, findUser.Email).
                                                Replace(EmailKey.ConfirmLink, generateCode);

                        ContentEmail(_config.Value.SendGridKey, getFirstEmail.Subject,
                                     getFirstEmail.Message, findUser.Email).Wait();
                    }

                    return(new CommandResult <NewsProviderViewModel>
                    {
                        isValid = true,
                        myModel = vm
                    });
                }
                else
                {
                    await Logging <RegisterNewsProviderServiceCommand> .
                    WarningAsync(ActionCommand.COMMAND_ADD, userName, ErrorMessageConstant.ERROR_DELETE_PERMISSION);

                    return(new CommandResult <NewsProviderViewModel>
                    {
                        isValid = true,
                        errorMessage = ErrorMessageConstant.ERROR_ADD_PERMISSION
                    });
                }
            }
            catch (System.Exception ex)
            {
                await Logging <RegisterNewsProviderServiceCommand> .
                ErrorAsync(ex, ActionCommand.COMMAND_ADD, userName, "Has error");

                return(new CommandResult <NewsProviderViewModel>
                {
                    isValid = false,
                    myModel = vm,
                    errorMessage = ex.InnerException.ToString()
                });
            }
        }