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")); } }
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)); }
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)); }
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")); }
public void OnGet(int id) { idServizio = id; if (Input == null) { Input = new Models.Feedback(); } }
public async Task CreateFeedback(Models.Feedback feedback) { using (ApplicationDbContext context = new ApplicationDbContext()) { feedback.id = Guid.NewGuid(); context.Feedback.Add(feedback); await context.SaveChangesAsync(); } }
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; })); }
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); }
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)); }
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)); }
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()); }
/// <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); }
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")); }
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)); }
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()); }
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); }
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)); }
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")); } }
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", "機器人驗證失敗,請重新驗證"); } } }
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))); }
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); }
public void InsertFeedback(Models.Feedback feedback) { throw new System.NotImplementedException(); }
public FeedbackListModel(Models.Feedback model) { Id = model.Id; Content = model.Content; CreateTime = model.CreateTime; }