Ejemplo n.º 1
0
        public async Task <bool> CreateBugReport(CreateBugReportViewModel model, IUrlHelper url)
        {
            var bugReportCategory = _context.BugReportCategories.First(x => x.Index == (BugReportCategoriesEnum)model.SelectedCategory);
            var reportStatus      = _context.ReportStatus.First(x => x.Index == ReportStatusEnum.WaitingForReview);

            string homePage = url.Action("Index", "Home", new {}, protocol: _httpContextAccessor.HttpContext.Request.Scheme);
            var    html     = await InterpolateDataIntoFile("link", homePage);

            AppUser user = _httpContextAccessor.HttpContext.User.Identity.IsAuthenticated
                ? await _userManager.FindByEmailAsync(_httpContextAccessor.HttpContext.User.Identity.Name)
                : null;

            var imageUploadResult = await _imgUrService.UploadImageAsync(model.ImageToUpload);

            var bugReport = new BugReport
            {
                Id                = Guid.NewGuid(),
                AppUser           = user,
                BugReportCategory = bugReportCategory,
                Status            = reportStatus,
                Title             = model.Title,
                Email             = model.Email,
                Message           = model.Message,
                DateTime          = DateTime.UtcNow,
                ImgUrl            = imageUploadResult?.Link
            };

            try
            {
                _context.BugReports.Add(bugReport);
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError("UserName: {0} | UserId: {1} | Request: {2} | Message: {3}",
                                 user != null ? user.LastName : "Null",
                                 user != null ? user.LastName : "Null",
                                 _httpContextAccessor.HttpContext.Request.GetRawTarget(),
                                 $"Error on saving bug report. Report Title: {model.Title}; Report Message: {model.Message}; User Email: {model.Email}; Error: {e.Message}; Inner exception: {e.InnerException?.Message}; Stacktrace:\n{e.StackTrace};");

                return(false);
            }

            var sendEmailResult = await SendMailAsync(model.Email, "Bug report confirmation", html);

            var admins = await _userManager.GetUsersInRoleAsync(DefaultIdentity.RoleAdmin);

            foreach (var admin in admins)
            {
                await SendMailAsync(admin.Email, "New bug report received!", $"Hi {admin.FirstName} {admin.LastName}.<br>A new bug report was received. Please go to the admin panel and review it as soon as possible!");
            }

            if (!sendEmailResult)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 2
0
        public DevBlogPostUpdateResult UpdatePost(ref EditDevBlogPostViewModel model)
        {
            var userForLog = _userManager.FindByEmailAsync(_httpContextAccessor.HttpContext.User.Identity.Name).Result;

            if (model.Id is null)
            {
                var newPost = new DevBlogPost
                {
                    Id             = Guid.NewGuid(),
                    Title          = model.Title,
                    PostMessage    = model.PostMessage,
                    Link           = model.Link,
                    LinkTitle      = model.LinkTitle,
                    DateTimePosted = DateTime.Today,
                    LikesCounter   = 0
                };

                if (model.ImageToUpload != null)
                {
                    var imageUploadResult = _imgUrService.UploadImageAsync(model.ImageToUpload).Result;

                    if (imageUploadResult is null)
                    {
                        return(DevBlogPostUpdateResult.Failed);
                    }

                    model.ImgUrl          = imageUploadResult.Link;
                    newPost.ImgDeleteHash = imageUploadResult.DeleteHash;
                    newPost.ImgUrl        = imageUploadResult.Link;
                }

                _context.Add(newPost);
                _context.SaveChanges();

                _logger.LogInformation("UserName: {0} | UserId: {1} | Request: {2} | Message: {3}",
                                       userForLog.UserName,
                                       userForLog.Id,
                                       _httpContextAccessor.HttpContext.Request.GetRawTarget(),
                                       $"New post was created. ID: {newPost.Id}, Title: {newPost.Title}");

                return(DevBlogPostUpdateResult.Created);
            }

            var postId = model.Id;
            var post   = _context.DevBlogPosts.FirstOrDefault(x => x.Id == Guid.Parse(postId));

            if (post is null)
            {
                return(DevBlogPostUpdateResult.NotFound);
            }

            if (model.ImageToUpload != null)
            {
                _imgUrService.DeleteImageAsync(post.ImgDeleteHash);
                var imageUploadResult = _imgUrService.UploadImageAsync(model.ImageToUpload).Result;

                if (imageUploadResult is null)
                {
                    return(DevBlogPostUpdateResult.Failed);
                }

                model.ImgUrl       = imageUploadResult.Link;
                post.ImgDeleteHash = imageUploadResult.DeleteHash;
                post.ImgUrl        = imageUploadResult.Link;
            }

            post.Title       = model.Title;
            post.PostMessage = model.PostMessage;
            post.LinkTitle   = model.LinkTitle;
            post.Link        = model.Link;

            _context.Update(post);
            _context.SaveChanges();

            _logger.LogInformation("UserName: {0} | UserId: {1} | Request: {2} | Message: {3}",
                                   userForLog.UserName,
                                   userForLog.Id,
                                   _httpContextAccessor.HttpContext.Request.GetRawTarget(),
                                   $"Post was updated. ID: {post.Id}, New Title: {post.Title}");

            return(DevBlogPostUpdateResult.Updated);
        }