Exemplo n.º 1
0
 public ActionResult AddFeedback(Models.Feedback feedback)
 {
     try
     {
         if (HttpContext.Session.GetString("username") == "")
         {
             return(RedirectToAction("Index", "Login"));
         }
         Models.Feedback feed = _mapper.Map <Models.Feedback>(_repObj.FindFeedback(feedback.ComplaintId));
         if (feed == null)
         {
             var ratingList = new int[6] {
                 0, 1, 2, 3, 4, 5
             };
             ViewBag.RatingList = ratingList;
             return(View("AddFeedback", feedback));
         }
         else
         {
             return(View("ViewFeedback", feed));
         }
     }
     catch (Exception ex)
     {
         return(View("Error"));
     }
 }
Exemplo n.º 2
0
        public ActionResult SaveProcesse(Guid feedbackId)
        {
            var result = new DataJsonResult();

            Models.Feedback feedback = _currencyService.GetSingleById <Models.Feedback>(feedbackId);

            if (feedback != null)
            {
                feedback.ProcesseStatus = ProcesseStatus.Processed;
                var currentUser = _userContainer.CurrentUser;
                feedback.ProcesseUserId = currentUser.Id.ToGuid();
                feedback.ProcesseTime   = DateTime.Now;
                bool res = _feedbackService.UpdateFeedback(feedback);
                if (!res)
                {
                    result.ErrorMessage = "处理失败";
                }
            }
            else
            {
                result.ErrorMessage = "反馈不存在!";
            }

            return(Json(result));
        }
Exemplo n.º 3
0
        public ActionResult ProcesseOnPost(ProcesseFeedbackViewModel processeFeedback)
        {
            var result = new DataJsonResult();

            Models.Feedback model = new Models.Feedback();

            if (!string.IsNullOrWhiteSpace(processeFeedback.Id.ToString()) && processeFeedback.Id != Guid.Empty)
            {
                model = _feedbackService.GetFeedbackById(processeFeedback.Id);
            }

            if (model == null)
            {
                result.ErrorMessage = "请选择要处理的反馈信息";
            }
            else
            {
                model.ProcesseStatus = processeFeedback.ProcesseStatus;
                model.ProcesseRemark = processeFeedback.ProcesseRemark;
                var currentUser = _userContainer.CurrentUser;
                model.ProcesseUserId = currentUser.Id.ToGuid();
                model.ProcesseTime   = DateTime.Now;

                bool res = _feedbackService.UpdateFeedback(model);;
                if (!res)
                {
                    result.ErrorMessage = "处理失败";
                }
            }

            return(Json(result));
        }
Exemplo n.º 4
0
        public ActionResult SendFeedback(Models.Feedback fb)
        {
            Regex rx = new Regex(
                @"^[-!#$%&'*+/0-9=?A-Z^_a-z{|}~](\.?[-!#$%&'*+/0-9=?A-Z^_a-z{|}~])*@[a-zA-Z](-?[a-zA-Z0-9])*(\.[a-zA-Z](-?[a-zA-Z0-9])*)+$");

            string result = null;

            if (fb.Name == null)
            {
                result += string.Format("<p style='color: #FF0000;'>Du måste fylla i ett namn.</p>");
            }
            if (fb.Email != null)
            {
                if (!rx.IsMatch(fb.Email))
                {
                    result += string.Format("<p style='color: #FF0000;'>Du måste fylla i en giltig e-post adress.</p>");
                }
            }
            else
            {
                result += string.Format("<p style='color: #FF0000;'>Du måste fylla i en e-post adress.</p>");
            }
            if (fb.Text == null)
            {
                result += string.Format("<p style='color: #FF0000;'>Du måste fylla i ett meddelande</p>");
            }

            if (result == null)
            {
                try
                {
                    //Client
                    SmtpClient client = new SmtpClient();
                    client.Credentials = new System.Net.NetworkCredential("*****@*****.**", "never4get");
                    client.Port        = 25;
                    client.Host        = "mail.webbdudes.se";
                    client.EnableSsl   = false;

                    //Mail
                    System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                    mail.From = new MailAddress("*****@*****.**");
                    mail.To.Add("*****@*****.**");
                    //mail.CC.Add(fb.Email);
                    mail.Subject    = "Feedback - " + fb.Subject;
                    mail.Body       = string.Format("Från: {0} - {1} <br />{2}", fb.Name, fb.Email, fb.Text.Replace("\n", "<br />"));
                    mail.IsBodyHtml = true;

                    client.Send(mail);

                    result = "ok";
                }
                catch
                {
                    result = string.Format("<p style='color: #FF0000;'>Ett fel uppstod, försök igen senare.</p>");
                }
            }

            return(Content(result, "text/html"));
        }
Exemplo n.º 5
0
 public void OnGet(int id)
 {
     idServizio = id;
     if (Input == null)
     {
         Input = new Models.Feedback();
     }
 }
Exemplo n.º 6
0
 public async Task CreateFeedback(Models.Feedback feedback)
 {
     using (ApplicationDbContext context = new ApplicationDbContext())
     {
         feedback.id = Guid.NewGuid();
         context.Feedback.Add(feedback);
         await context.SaveChangesAsync();
     }
 }
Exemplo n.º 7
0
        public Task <int> Add(Models.Feedback feedback)
        {
            // Create the TableOperation object that inserts the customer entity.
            TableOperation insertOperation = TableOperation.Insert(feedback);
            // Execute the insert operation.
            var tableResult = _table.ExecuteAsync(insertOperation);

            return(Task.Run(() => { return tableResult.Id; }));
        }
Exemplo n.º 8
0
        public bool UpdateFeedback(Models.Feedback feedback)
        {
            var result = _currencyService.Update <Models.Feedback>(feedback);

            if (result)
            {
                Logger.Operation($"处理反馈:{feedback.Id}", FeedbackModule.Instance, SecurityLevel.Normal);
            }
            return(result);
        }
Exemplo n.º 9
0
        public IActionResult Post([FromBody] Models.Feedback feedback)
        {
            var sub = WhoAmI();

            feedback.UserId = sub;

            _context.Feedbacks.Add(feedback);
            var id = _context.SaveChanges();

            return(Ok(id));
        }
        public IHttpActionResult PostFeedback(Models.Feedback feedback)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = db.SaveFeedback(feedback.ToDataAccess());

            return(CreatedAtRoute("DefaultApi", new { id = feedback.FeedbackId }, result));
        }
Exemplo n.º 11
0
        public ActionResult Processe(Guid id, bool isView)
        {
            bool editMode = !isView;

            ViewBag.EditMode = editMode;
            ViewBag.IsView   = isView;


            Models.Feedback feedback = _feedbackService.GetFeedbackById(id);
            Argument.ThrowIfNull(feedback, "反馈信息不存在");

            return(View(feedback));
        }
Exemplo n.º 12
0
        public bool Delete(Models.Feedback feedback)
        {
            //逻辑删除反馈
            feedback.Status = FeedbackStatus.Delete;
            var result = _currencyService.Update(feedback);

            if (result)
            {
                Logger.Operation($"删除反馈:{feedback.Id}", FeedbackModule.Instance, SecurityLevel.Warning);
            }

            return(result);
        }
        public async Task <FeedbackViewModel> Handle(AddFeedbackCommand message)
        {
            var newFeedback = new Models.Feedback
            {
                UserId       = message.UserId,
                FeedbackType = (int)message.FeedbackBody.FeedbackType,
                FeedbackText = message.FeedbackBody.FeedbackText
            };

            _context.Feedback.Add(newFeedback);
            await _context.SaveChangesAsync();

            return(_context.Feedback.Where(x => x.FeedbackId == newFeedback.FeedbackId).ProjectTo <FeedbackViewModel>().Single());
        }
Exemplo n.º 14
0
        /// <summary>
        /// 新增反馈
        /// </summary>
        /// <param name="feedback"></param>
        /// <param name="imageFiles"></param>
        /// <returns></returns>
        public void CreateFeedback(Models.Feedback feedback, List <Base64Image> imageFiles = null)
        {
            Argument.ThrowIfNull(imageFiles, "反馈照片");
            if (imageFiles != null)
            {
                foreach (var imgFile in imageFiles)
                {
                    Argument.ThrowIfNullOrEmpty(imgFile.Data, "图片数据");
                    Argument.ThrowIfNullOrEmpty(imgFile.FileName, "图片文件名");
                    if (string.IsNullOrWhiteSpace(Path.GetExtension(imgFile.FileName)))
                    {
                        throw new WebApiInnerException("0003", "文件名称没有包含扩展名");
                    }
                }
            }

            feedback.Id             = KeyGenerator.GetGuidKey();
            feedback.CreateTime     = DateTime.Now;
            feedback.Status         = FeedbackStatus.Normal;
            feedback.ProcesseStatus = (int)ProcesseStatus.Untreated;
            var result = _currencyService.Create <Models.Feedback>(feedback);

            if (!result)
            {
                throw new WebApiInnerException("1002", "参数值有误");//return Guid.Empty;
            }

            if (imageFiles != null)
            {
                foreach (var imgFile in imageFiles)
                {
                    //上传图片
                    StorageFile storageFile;
                    if (_fileService.SaveFile(imgFile.Data, imgFile.FileName, false, out storageFile, 200, 200, 100, 100, ThumbnailType.TakeCenter))
                    {
                        //关联图片
                        if (!_storageFileService.AssociateFile(feedback.Id, FeedbackModule.Key, FeedbackModule.DisplayName, storageFile.Id, FileTypeName))
                        {
                            throw new WebApiInnerException("1003", "图片关联失败");
                        }
                    }
                    else
                    {
                        throw new WebApiInnerException("1004", "图片上传失败");
                    }
                }
            }

            Logger.Operation($"创建反馈:{feedback.Id}", FeedbackModule.Instance, SecurityLevel.Normal);
        }
Exemplo n.º 15
0
        public IActionResult Edit()
        {
            var form = Request.Form;

            var feedback = new Models.Feedback
            {
                Id   = Guid.Parse(form["Id"]),
                Name = form["Name"],
                Text = form["Text"],
            };

            feedbackRepository.Update(feedback);
            return(RedirectToAction("Index"));
        }
Exemplo n.º 16
0
        public IActionResult New()
        {
            var form     = Request.Form;
            var feedback = new Models.Feedback
            {
                Id        = Guid.NewGuid(),
                Name      = form["Name"],
                Text      = form["Text"],
                CreatedAt = DateTime.Now,
                UpdatedAt = DateTime.Now
            };

            mariaFeedbackRepository.Create(feedback);

            return(RedirectToAction("Index"));
        }
        public async Task <IHttpActionResult> PutFeedback(short id, Models.Feedback feedback)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != feedback.FeedbackId)
            {
                return(BadRequest());
            }

            var _ = await Handler.SaveFeedbackAsync(feedback);

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public async Task <IHttpActionResult> PostFeedback(Models.Feedback feedback)
        {
            Log.Debug("Feedback:" + JsonConvert.SerializeObject(feedback));
            if (!ModelState.IsValid)
            {
                Log.Warn("Model state is invalid");
                return(BadRequest(ModelState));
            }

            Log.Debug("Before SaveFeedback");
            var result = await Handler.SaveFeedbackAsync(feedback);

            Log.Debug("After SaveFeedback");

            return(Ok(result));
        }
        public IHttpActionResult PutFeedback(short id, Models.Feedback feedback)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != feedback.FeedbackId)
            {
                return(BadRequest());
            }

            var result = db.SaveFeedback(feedback.ToDataAccess());

            return(StatusCode(HttpStatusCode.NoContent));
        }
Exemplo n.º 20
0
        public async Task <IActionResult> CreateAsync([FromBody] Models.Feedback feedback)
        {
            logger.LogDebug($"Create\t{feedback.ToString()}");
            try
            {
                if (feedback == null)
                {
                    logger.LogError("Create\tfeedback missing");
                    return(BadRequest());
                }
                else if (!ModelState.IsValid)
                {
                    logger.LogError("Create\tinvalid ModelState");
                    foreach (var entry in ModelState)
                    {
                        foreach (var error in entry.Value.Errors)
                        {
                            logger.LogInformation($"Create\t{entry.Key}\t{error.ErrorMessage}");
                        }
                    }
                    return(BadRequest());
                }

                var app = CheckAuthentication();
                if (app == null)
                {
                    logger.LogError("Create\tAuthentication missing");
                    return(Unauthorized());
                }

                if (!CheckThreshold(app))
                {
                    logger.LogError("Create\tThreshold reached");
                    return(new StatusCodeResult(429)); // Too Many Requests
                }

                await this.SendMailAsync(app, feedback);
            }
            catch (Exception e)
            {
                logger.LogError($"Create\t{e}");
                return(BadRequest());
            }
            return(NoContent());
        }
Exemplo n.º 21
0
        public ApiResult Create([FromBody] CreateFeedbackModel feedback)
        {
            Argument.ThrowIfNullOrEmpty(feedback.Content, "反馈内容");

            var model = new Models.Feedback()
            {
                Content      = feedback.Content,
                FeedbackType = feedback.FeedbackType,
                SourceType   = SourceTpye,
                MemberId     = AuthorizedUser.Id.ToGuid(),
                ModuleKey    = FeedbackModule.Key,
                ModuleName   = FeedbackModule.DisplayName
            };

            _feedbackService.CreateFeedback(model);

            ApiResult result = new ApiResult();

            return(result);
        }
Exemplo n.º 22
0
        public ActionResult Delete(Guid feedbackId)
        {
            var result = new DataJsonResult();

            Models.Feedback feedback = _currencyService.GetSingleById <Models.Feedback>(feedbackId);

            if (feedback != null)
            {
                var isDelete = _feedbackService.Delete(feedback);

                if (!isDelete)
                {
                    result.ErrorMessage = "删除失败!";
                }
            }
            else
            {
                result.ErrorMessage = "反馈不存在!";
            }

            return(Json(result));
        }
Exemplo n.º 23
0
 public ActionResult SaveAddedFeedback(Models.Feedback feedback, IFormCollection frm)
 {
     try
     {
         if (HttpContext.Session.GetString("username") == "")
         {
             return(RedirectToAction("Index", "Login"));
         }
         feedback.Rating       = Convert.ToInt32(frm["Rating"]);
         feedback.FeedbackDesr = frm["FeedbackDesr"];
         ServiceRepository   serviceRepository = new ServiceRepository(configuration);
         HttpResponseMessage response          = serviceRepository.PostRequest("api/Home/AddFeedback", feedback);
         response.EnsureSuccessStatusCode();
         if (response.Content.ReadAsAsync <bool>().Result)
         {
             return(View("SuccessFeedback"));
         }
         return(View("AddFeedback"));
     }
     catch (Exception ex)
     {
         return(View("Error"));
     }
 }
Exemplo n.º 24
0
        public async Task OnPostAsync()
        {
            // Create html droplist item
            Types = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = "錯誤回報 (Bugs)", Value = ((int)Models.FeedbackType.Bugs).ToString(), Selected = true
                },
                new SelectListItem()
                {
                    Text = "問題 (Question)", Value = ((int)Models.FeedbackType.Question).ToString(), Selected = false
                },
                new SelectListItem()
                {
                    Text = "建議 (Suggesstion)", Value = ((int)Models.FeedbackType.Suggestion).ToString(), Selected = false
                },
                new SelectListItem()
                {
                    Text = "其它 (Others)", Value = ((int)Models.FeedbackType.Others).ToString(), Selected = false
                }
            };
            // Get reCAPTHCA key from appsettings.json
            ViewData["ReCaptchaKey"] = appSettings.GoogleReCaptcha.SiteKey;

            // Student model
            var student = JsonConvert.DeserializeObject <Models.Student>(
                User.Claims.First(claim => claim.Type == "Information").Value);

            Feedback.DateTime = DateTime.Now;
            Feedback.Creator  = student.Username;
            Feedback.Guid     = Guid.NewGuid().ToString();

            // Check feedback
            if (ModelState.IsValid &&
                ReCaptchaPassed(
                    gRecaptchaResponse: Request.Form["g-recaptcha-response"],     // that's how you get it from the Request object
                    secret: appSettings.GoogleReCaptcha.Secret))
            {
                // Check reCaptcha
                if (ReCaptchaPassed(
                        gRecaptchaResponse: Request.Form["g-recaptcha-response"], // that's how you get it from the Request object
                        secret: appSettings.GoogleReCaptcha.Secret))
                {
                    var feedbackRepository = new Repositorys.FeedbackRepository(appSettings.ConnectionStrings.DefaultConnection);
                    if (await feedbackRepository.Insert(feedback: Feedback) <= 0)
                    {
                        ModelState.AddModelError("Error", "Feedback 建立失敗");
                    }
                    else
                    {
                        Feedback = new Models.Feedback();
                        ModelState.AddModelError("Success", "Feedback 建立成功");
                    }
                }
                else
                {
                    ModelState.AddModelError("Error", "機器人驗證失敗,請重新驗證");
                }
            }
        }
Exemplo n.º 25
0
        private async Task SendMailAsync(AppConfiguration app, Models.Feedback feedback)
        {
            var message = new MimeMessage();

            message.From.Add(new MailboxAddress(mailConfiguration.SenderName, mailConfiguration.SenderMail));
            message.To.Add(new MailboxAddress(app.RecipientName, app.RecipientMail));
            message.Subject = $"Feedback from {app.AppName}";

            var bodyBuilder = new BodyBuilder();

            bodyBuilder.HtmlBody = $"<p><b>Timestamp:</b> {feedback.Timestamp.ToString("o")}</p>";
            if (!string.IsNullOrEmpty(feedback.Category))
            {
                message.Subject      += $" - {feedback.Category}";
                bodyBuilder.HtmlBody += $"<p><b>Category:</b> {feedback.Category}</p>";
            }
            if (!string.IsNullOrEmpty(feedback.Email))
            {
                bodyBuilder.HtmlBody += $"<p><b>Email:</b> {feedback.Email}</p>";
            }
            bodyBuilder.HtmlBody += $"<p>{feedback.Message}</p>";
            if (feedback.DeviceInfo != null)
            {
                var deviceInfoAttachment =
                    $"Manufacturer\t{feedback.DeviceInfo.Manufacturer}\n" +
                    $"Model\t{feedback.DeviceInfo.Model}\n" +
                    $"Uuid\t{feedback.DeviceInfo.Uuid}\n" +
                    $"Serial\t{feedback.DeviceInfo.Serial}\n" +
                    $"Platform\t{feedback.DeviceInfo.Platform}\n" +
                    $"Version\t{feedback.DeviceInfo.Version}\n" +
                    $"Cordova\t{feedback.DeviceInfo.Cordova}\n" +
                    $"IsVirtual\t{feedback.DeviceInfo.IsVirtual}\n";
                bodyBuilder.Attachments.Add("deviceInfo.txt", Encoding.UTF8.GetBytes(deviceInfoAttachment), new ContentType("text", "plain"));
            }
            if (feedback.AppInfo != null)
            {
                var appInfoAttachment =
                    $"AppName\t{feedback.AppInfo.AppName}\n" +
                    $"PackageName\t{feedback.AppInfo.PackageName}\n" +
                    $"VersionCode\t{feedback.AppInfo.VersionCode}\n" +
                    $"VersionNumber\t{feedback.AppInfo.VersionNumber}\n";
                bodyBuilder.Attachments.Add("appInfo.txt", Encoding.UTF8.GetBytes(appInfoAttachment), new ContentType("text", "plain"));
            }
            if (feedback.LogMessages != null)
            {
                var logMessagesAttachment = "Timestamp\tLevel\tLogger\tMethod Name\tMessage\n";
                foreach (var logMessage in feedback.LogMessages)
                {
                    logMessagesAttachment += $"{logMessage.TimeStamp}\t{logMessage.Level}\t{logMessage.Logger}\t{logMessage.MethodName}\t{string.Join("\t", logMessage.Message)}\n";
                }
                bodyBuilder.Attachments.Add("logMessages.txt", Encoding.UTF8.GetBytes(logMessagesAttachment), new ContentType("text", "plain"));
            }
            if (!string.IsNullOrEmpty(feedback.Screenshot))
            {
                bodyBuilder.HtmlBody += $"<p><img src=\"{feedback.Screenshot}\"></p>";
            }
            message.Body = bodyBuilder.ToMessageBody();

            using (var client = new SmtpClient())
            {
                await client.ConnectAsync(mailConfiguration.Server, mailConfiguration.Port, false);

                // since we don't have an OAuth2 token, disable the XOAUTH2 authentication mechanism
                client.AuthenticationMechanisms.Remove("XOAUTH2");
                await client.AuthenticateAsync(mailConfiguration.User, mailConfiguration.Password);

                await client.SendAsync(message);

                await client.DisconnectAsync(true);
            }
        }
 public ActionResult Feedback(int page = 1)
 {
     Models.Feedback feedback = new Models.Feedback();
     return(View(feedback.GetFeedbackList().ToPagedList(page, 2)));
 }
Exemplo n.º 27
0
        public static Models.Feedback CreateFeedback(ContentServiceConfiguration settings, Models.Feedback newFeedback)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(settings.BaseUrl);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                client.DefaultRequestHeaders.Add("api-version", "1.0");

                var stringContent = new StringContent(JsonConvert.SerializeObject(newFeedback),
                                                      Encoding.UTF8,
                                                      "application/json");

                HttpResponseMessage response = client.PostAsync(settings.ResourceRoot + "/Feedbacks", stringContent).Result;
                if (response.IsSuccessStatusCode)
                {
                    string stringData = response.Content.ReadAsStringAsync().Result;
                    return(JsonConvert.DeserializeObject <Models.Feedback>(stringData));
                }
            }

            return(null);
        }
Exemplo n.º 28
0
 public void InsertFeedback(Models.Feedback feedback)
 {
     throw new System.NotImplementedException();
 }
Exemplo n.º 29
0
 public FeedbackListModel(Models.Feedback model)
 {
     Id         = model.Id;
     Content    = model.Content;
     CreateTime = model.CreateTime;
 }