public async Task <ActionResult> DeleteConfirmed(int id)
        {
            ReportProblem reportProblem = await db.ReportProblem.FindAsync(id);

            db.ReportProblem.Remove(reportProblem);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> Edit([Bind(Include = "Id,Email,Title,Message,DateTime,IsChecked,UserId")] ReportProblem reportProblem)
        {
            if (ModelState.IsValid)
            {
                db.Entry(reportProblem).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(reportProblem));
        }
        public async Task <IReportProblemResponse> ReportProblemAsync(ReportProblemView view)
        {
            try
            {
                logger.Info($"{ GetType().Name}  {  ExtensionUtility.GetCurrentMethod() }  input: {view.ToJsonString()} UserIPAddress: { _userIPAddress.GetUserIP().Result }");

                var email = await _appDbContext.UserInfos.Where(k => k.UserId == view.UserID).Select(k => k.Email).FirstOrDefaultAsync();

                if (email == null)
                {
                    return(new ReportProblemResponse(ClientMessageConstant.UserNotFound, HttpStatusCode.NotFound));
                }

                var firstName = await _appDbContext.Profiles.Where(k => k.Id == view.UserID).Select(k => k.FirstNameEn).FirstOrDefaultAsync();

                var lastName = await _appDbContext.Profiles.Where(k => k.Id == view.UserID).Select(k => k.LastNameEn).FirstOrDefaultAsync();

                var userName = firstName + " " + lastName;

                var data = new ReportProblem()
                {
                    UserID            = view.UserID,
                    ReportDescription = view.ReportDescription,
                    Created           = DateTime.Now,
                    Modified          = DateTime.Now,
                    CreatedBy         = userName,
                    ModifiedBy        = userName,
                };

                if (view.ReportFile != null)
                {
                    data.ReportFileID = (await SaveFileAsync(view.ReportFile, email)).Id;
                }

                await _appDbContext.ReportProblems.AddAsync(data);

                await _appDbContext.SaveChangesAsync();

                await _emailService.SendReportProblemEmailAsync(view.ReportDescription, email, userName);

                var reportProblem = _mapper.Map <ReportProblemModelView>(data);

                return(new ReportProblemResponse(reportProblem));
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                throw ex;
            }
        }
        // GET: ReportProblem/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ReportProblem reportProblem = await db.ReportProblem.FindAsync(id);

            if (reportProblem == null)
            {
                return(HttpNotFound());
            }
            return(View(reportProblem));
        }
        public async Task <ActionResult> Create([Bind(Include = "Id,Email,Title,Message,DateTime,IsChecked,UserId")] ReportProblem reportProblem)
        {
            if (ModelState.IsValid)
            {
                string UserId = User.Identity.GetUserId();
                reportProblem.UserId   = UserId;
                reportProblem.DateTime = DateTime.Now;

                db.ReportProblem.Add(reportProblem);
                await db.SaveChangesAsync();

                ViewBag.Message = "Thank you we received your report.";
                return(RedirectToAction("Create", "ReportProblem"));
            }

            return(View(reportProblem));
        }