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); }
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() }); } }