public DesignReviewVM CreateDesignReviewVM(DesignReview item) { return(new DesignReviewVM { Id = item.Id, Title = item.Title, Slug = SlugUtils.ToSlug(item.Title), Description = item.Description, CreatedDate = item.CreatedDate, //Docs = item.ReviewDocuments.OrderByDescending(e => e.CreatedDate).Select(e => this.createReviewDocumentVM(e)).ToList(), Options = item.ReviewDocuments.Where(e => e.DocType == "Design Option" || e.DocType == null).OrderBy(e => e.Order).Select(e => this.CreateReviewDocumentVM(e)).ToList(), Proofs = item.ReviewDocuments.Where(e => e.DocType == "Proof").OrderBy(e => e.Order).Select(e => this.CreateReviewDocumentVM(e)).ToList(), IsActive = item.IsActive, SelectedId = item.SelectedReviewDocumentId, SelectedComment = item.SelectedComment, AdditionalComment = item.AdditionalComment, Comments = item.ReviewComments.OrderByDescending(e => e.Created).Select(e => this.CreateReviewCommentVM(e)).ToList(), RequestById = item.RequestById, RequestByName = item.RequestByName, RequestType = item.RequestType, RequestDate = item.RequestDate, ApprovedById = item.ApprovedById, ApprovedByName = item.ApprovedByName, ApprovedDate = item.ApprovedDate, AcceptedDate = item.AcceptedDate, }); }
public ActionResult Create([Bind(Prefix = "DesignReview")] DesignReview designReview) { if (ModelState.IsValid) { DesignReview newDesignReview = new DesignReview(); newDesignReview.Id = Guid.NewGuid(); newDesignReview.Title = designReview.Title; newDesignReview.Description = designReview.Description; newDesignReview.SelectedComment = designReview.SelectedComment; newDesignReview.AdditionalComment = designReview.AdditionalComment; newDesignReview.AcceptedDate = designReview.AcceptedDate; newDesignReview.IsActive = designReview.IsActive; newDesignReview.ProjectId = designReview.ProjectId; UOW.DesignReviews.Add(newDesignReview); UOW.Commit(); designReview = newDesignReview; } DesignReviewVM vm = new DesignReviewVM { DesignReview = designReview, Projects = UOW.Projects.GetAll() }; return(View("Edit", vm)); }
public IHttpActionResult ApproveProject(Guid rid) { DesignReview dbReview = UOW.DesignReviews.GetOwnById(rid, UserRecord.Id); if (dbReview == null) { return(new SkyApiNotFound(Request)); } dbReview.ApprovedById = UserRecord.Id; dbReview.ApprovedByName = UserRecord.FullName; dbReview.ApprovedByIp = ""; // TODO djw: record requesting users IP address dbReview.ApprovedDate = DateTime.UtcNow; UOW.Commit(); IDictionary <string, string> formData = new Dictionary <string, string>(); formData.Add("User", UserRecord.FullName); formData.Add("Project", dbReview.Project.Name); formData.Add("Review", dbReview.Title); MailService.SendNotification(formData, "Skyberry Notification: Project Approval"); ReviewApprovedVM reviewApprovedVM = new ReviewApprovedVM { ApprovedById = dbReview.ApprovedById, ApprovedByName = dbReview.ApprovedByName, ApprovedByIp = dbReview.ApprovedByIp, ApprovedDate = dbReview.ApprovedDate, }; return(new SkyApiPayload <ReviewApprovedVM>(Request, reviewApprovedVM)); }
public ActionResult Edit([Bind(Prefix = "DesignReview")] DesignReview designReview) { DesignReview dbDesignReview = UOW.DesignReviews.GetById(designReview.Id); if (dbDesignReview != null) { dbDesignReview.Title = designReview.Title; dbDesignReview.Description = designReview.Description; dbDesignReview.SelectedComment = designReview.SelectedComment; dbDesignReview.AdditionalComment = designReview.AdditionalComment; dbDesignReview.AcceptedDate = designReview.AcceptedDate; dbDesignReview.IsActive = designReview.IsActive; dbDesignReview.ProjectId = designReview.ProjectId; UOW.Commit(); designReview = dbDesignReview; } DesignReviewVM vm = new DesignReviewVM { DesignReview = designReview, Projects = UOW.Projects.GetAll() }; return(View(vm)); }
public IHttpActionResult ClearOption(Guid rid) { DesignReview dbReview = UOW.DesignReviews.GetOwnById(rid, UserRecord.Id); if (dbReview == null) { return(new SkyApiNotFound(Request)); } if (dbReview.AcceptedDate != null) { ModelState.AddModelError("", "Review has been accepted and further edits are not allowed."); return(new SkyApiBadRequest(Request, new SkyModelStateError(ModelState))); } // clear selected option dbReview.SelectedReviewDocumentId = null; // clear approval dbReview.ApprovedById = null; dbReview.ApprovedByName = null; dbReview.ApprovedByIp = null; dbReview.ApprovedDate = null; // clear request dbReview.RequestById = null; dbReview.RequestByName = null; dbReview.RequestByIp = null; dbReview.RequestType = RequestType.None; dbReview.RequestDate = null; UOW.Commit(); return(new SkyApiOkeydoke(Request)); }
public IHttpActionResult GetDesignReview(Guid rid) { DesignReview dbReview = UOW.DesignReviews.GetOwnById(rid, UserRecord.Id); if (dbReview == null) { return(new SkyApiNotFound(Request)); } return(new SkyApiPayload <DesignReviewVM>(Request, ModelFactory.CreateDesignReviewVM(dbReview))); }
public ActionResult DeleteConfirmed(Guid id) { DesignReview designReview = UOW.DesignReviews.GetById(id); if (designReview == null) { return(HttpNotFound()); } UOW.DesignReviews.Delete(designReview); UOW.Commit(); return(RedirectToAction("Index")); }
public IHttpActionResult AddComment(Guid rid, [FromBody] ReviewCommentBM model) { DesignReview dbReview = UOW.DesignReviews.GetOwnById(rid, UserRecord.Id); if (dbReview == null) { return(new SkyApiNotFound(Request)); } ReviewDocument dbOption = UOW.ReviewDocuments.GetById(model.oid); if (dbOption == null) { return(new SkyApiNotFound(Request)); } if (dbReview.AcceptedDate != null) { ModelState.AddModelError("", "Review has been accepted and further changes are not allowed."); return(new SkyApiBadRequest(Request, new SkyModelStateError(ModelState))); } ReviewComment reviewComment = new ReviewComment { Comment = model.comment, // TODO: looks like a typo (OrderId should be OptionId) OrderId = dbOption.Id, DesignReviewId = rid, UserId = new Guid(UserRecord.Id), Username = UserRecord.UserName }; dbReview.ReviewComments.Add(reviewComment); UOW.Commit(); IDictionary <string, string> formData = new Dictionary <string, string>(); formData.Add("User", UserRecord.FullName); formData.Add("Project", dbReview.Project.Name); formData.Add("Review", dbReview.Title); formData.Add("Option", dbOption.Title); formData.Add("Commment", model.comment); MailService.SendNotification(formData, "Skyberry Notification: New Comment"); return(new SkyApiPayload <ReviewCommentVM>(Request, ModelFactory.CreateReviewCommentVM(reviewComment))); }
public ActionResult Details(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } DesignReview designReview = UOW.DesignReviews.GetById(id); if (designReview == null) { return(HttpNotFound()); } DesignReviewVM vm = new DesignReviewVM { DesignReview = designReview }; return(View(vm)); }
public ActionResult Edit(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } DesignReview designReview = UOW.DesignReviews.GetById(id); if (designReview == null) { return(HttpNotFound()); } DesignReviewVM vm = new DesignReviewVM { DesignReview = designReview, Projects = UOW.Projects.GetAll() }; System.Diagnostics.Debug.WriteLine(vm); return(View(vm)); }
public IHttpActionResult ClearRequest(Guid rid) { DesignReview dbReview = UOW.DesignReviews.GetOwnById(rid, UserRecord.Id); if (dbReview == null) { return(new SkyApiNotFound(Request)); } if (dbReview.AcceptedDate != null) { ModelState.AddModelError("", "Review has been accepted and further changes are not allowed."); return(new SkyApiBadRequest(Request, new SkyModelStateError(ModelState))); } dbReview.RequestById = null; dbReview.RequestByName = null; dbReview.RequestByIp = null; dbReview.RequestType = RequestType.None; dbReview.RequestDate = null; dbReview.ApprovedById = null; dbReview.ApprovedByName = null; dbReview.ApprovedByIp = null; dbReview.ApprovedDate = null; UOW.Commit(); IDictionary <string, string> formData = new Dictionary <string, string>(); formData.Add("User", UserRecord.FullName); formData.Add("Project", dbReview.Project.Name); formData.Add("Review", dbReview.Title); MailService.SendNotification(formData, "Skyberry Notification: Request Canceled"); return(new SkyApiPayload <ReviewClearVM>(Request, new ReviewClearVM())); }
public IHttpActionResult RequestDeliverables(Guid rid) { DesignReview dbReview = UOW.DesignReviews.GetOwnById(rid, UserRecord.Id); if (dbReview == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } dbReview.RequestById = UserIdentityId; dbReview.RequestByName = UserRecord.FullName; dbReview.RequestByIp = ""; // TODO djw: record requesting users IP address dbReview.RequestType = RequestType.Deliverables; dbReview.RequestDate = DateTime.UtcNow; UOW.Commit(); IDictionary <string, string> formData = new Dictionary <string, string>(); formData.Add("User", UserRecord.FullName); formData.Add("Project", dbReview.Project.Name); formData.Add("Review", dbReview.Title); formData.Add("Request Type", "Deliverables"); MailService.SendNotification(formData, "Skyberry Notification: Deliverables Request"); ReviewRequestVM reviewRequestVM = new ReviewRequestVM { RequestById = dbReview.RequestById, RequestByName = dbReview.RequestByName, RequestByIp = dbReview.RequestByIp, RequestType = dbReview.RequestType, RequestDate = dbReview.RequestDate, }; return(new SkyApiPayload <ReviewRequestVM>(Request, reviewRequestVM)); }
public DesignReviewVM CreateDesignReviewVM(DesignReview item) { return new DesignReviewVM { Id = item.Id, Title = item.Title, Slug = SlugUtils.ToSlug(item.Title), Description = item.Description, CreatedDate = item.CreatedDate, //Docs = item.ReviewDocuments.OrderByDescending(e => e.CreatedDate).Select(e => this.createReviewDocumentVM(e)).ToList(), Options = item.ReviewDocuments.Where(e=>e.DocType == "Design Option" || e.DocType == null).OrderBy(e => e.Order).Select(e => this.CreateReviewDocumentVM(e)).ToList(), Proofs = item.ReviewDocuments.Where(e => e.DocType == "Proof").OrderBy(e => e.Order).Select(e => this.CreateReviewDocumentVM(e)).ToList(), IsActive = item.IsActive, SelectedId = item.SelectedReviewDocumentId, SelectedComment = item.SelectedComment, AdditionalComment = item.AdditionalComment, Comments = item.ReviewComments.OrderByDescending(e => e.Created).Select(e => this.CreateReviewCommentVM(e)).ToList(), RequestById = item.RequestById, RequestByName = item.RequestByName, RequestType = item.RequestType, RequestDate = item.RequestDate, ApprovedById = item.ApprovedById, ApprovedByName = item.ApprovedByName, ApprovedDate = item.ApprovedDate, AcceptedDate = item.AcceptedDate, }; }
public DesignReviewVM() { DesignReview = new DesignReview(); Projects = new List<Project>(); }
public ActionResult MyAccountDesignReview_Post([Bind(Prefix = "DesignReview")] DesignReview designReview) { bool received = false; SkyberryUser user = UOW.SkyberryUsers.GetById(User.Identity.GetUserId()); string from = "*****@*****.**"; if (user.Contacts != null && user.Contacts.Count > 0) { foreach (var item in user.Contacts) { if (item.ContactType == "Email") { from = item.ContactData; } } } DesignReview dbDesignReview = UOW.DesignReviews.GetById(designReview.Id); ReviewDocument dbReviewDocument = UOW.ReviewDocuments.GetById(designReview.SelectedReviewDocumentId); if (dbDesignReview != null && !dbDesignReview.AcceptedDate.HasValue && dbReviewDocument != null) { dbDesignReview.SelectedComment = designReview.SelectedComment; dbDesignReview.AdditionalComment = designReview.AdditionalComment; dbDesignReview.SelectedReviewDocumentId = designReview.SelectedReviewDocumentId; UOW.Commit(); designReview = dbDesignReview; string description = "Skyberry Design Review Submission"; StringBuilder body = new StringBuilder(); body.Append("<table cellpadding='3' border='0'>"); body.AppendFormat("<tr><td style='background-color:#d7d7d7;white-space:nowrap;text-align:right;vertical-align:top;'><strong>{0}</strong></td><td style='background-color:#e6e6e5;text-align:left;vertical-align:top;'>{1} {2} ({3})</td></tr>", "User", user.FirstName, user.LastName, user.UserName); body.AppendFormat("<tr><td style='background-color:#d7d7d7;white-space:nowrap;text-align:right;vertical-align:top;'><strong>{0}</strong></td><td style='background-color:#e6e6e5;text-align:left;vertical-align:top;'>{1} | {2} | {3}</td></tr>", "Design Review", dbDesignReview.Project.Account.Name, dbDesignReview.Project.Name, dbDesignReview.Title); body.AppendFormat("<tr><td style='background-color:#d7d7d7;white-space:nowrap;text-align:right;vertical-align:top;'><strong>{0}</strong></td><td style='background-color:#e6e6e5;text-align:left;vertical-align:top;'>{1}</td></tr>", "Selected Option", dbReviewDocument.Title); body.AppendFormat("<tr><td style='background-color:#d7d7d7;white-space:nowrap;text-align:right;vertical-align:top;'><strong>{0}</strong></td><td style='background-color:#e6e6e5;text-align:left;vertical-align:top;'>{1}</td></tr>", "Selected Comment", dbDesignReview.SelectedComment); body.AppendFormat("<tr><td style='background-color:#d7d7d7;white-space:nowrap;text-align:right;vertical-align:top;'><strong>{0}</strong></td><td style='background-color:#e6e6e5;text-align:left;vertical-align:top;'>{1}</td></tr>", "Additional Comment", dbDesignReview.AdditionalComment); body.AppendFormat("<tr><td style='background-color:#d7d7d7;white-space:nowrap;text-align:right;vertical-align:top;'><strong>{0}</strong></td><td style='background-color:#e6e6e5;text-align:left;vertical-align:top;'>{1}{2}</td></tr>", "Shortcut", HtmlUtil.GetDomain(Request.Url), @Url.Action("MyAccountDesignReview", "MyAccount", new { id = dbReviewDocument.DesignReviewId })); body.AppendFormat("<tr><td style='background-color:#d7d7d7;white-space:nowrap;text-align:right;vertical-align:top;'><strong>{0}</strong></td><td style='background-color:#e6e6e5;text-align:left;vertical-align:top;'>{1}</td></tr>", "Timestamp", DateTime.UtcNow.AddHours(-8).ToString("MM/dd/yyyy @ h:mm tt")); body.AppendFormat("<tr><td style='background-color:#d7d7d7;white-space:nowrap;text-align:right;vertical-align:top;'><strong>{0}</strong></td><td style='background-color:#e6e6e5;text-align:left;vertical-align:top;'>{1}</td></tr>", "Users IP", HtmlUtil.GetUserIP()); body.Append("</table>"); MailMessage message = new MailMessage(); message.From = new MailAddress(from); message.To.Add(new MailAddress("*****@*****.**")); message.Subject = description; message.IsBodyHtml = true; message.Body = body.ToString(); message.BodyEncoding = System.Text.Encoding.UTF8; message.SubjectEncoding = System.Text.Encoding.UTF8; SmtpClient SMTPServer = new SmtpClient(WebConfigurationManager.AppSettings["SMTP_HOST"]); SMTPServer.Port = Int16.Parse(WebConfigurationManager.AppSettings["SMTP_PORT"]); //SMTPServer.Credentials = new System.Net.NetworkCredential(WebConfigurationManager.AppSettings["SMTP_USERNAME"], WebConfigurationManager.AppSettings["SMTP_PASSWORD"]); try { #if DEBUG string debugAddress = WebConfigurationManager.AppSettings["DEBUG_EMAIL"]; if (!string.IsNullOrEmpty(debugAddress)) { message.To.Clear(); message.CC.Clear(); message.Bcc.Clear(); message.To.Add(debugAddress); } #endif SMTPServer.Send(message); received = true; } catch (Exception ex) { #if DEBUG ModelState.AddModelError(string.Empty, "Exception: " + ex.Message); #endif } message.Dispose(); } Account account = null; HttpCookie cookie = Request.Cookies.Get("accountId"); if (cookie != null) { try { account = UOW.Accounts.GetById(Guid.Parse(cookie.Value)); } catch { } } if (account == null && user.Accounts != null && user.Accounts.Count > 0) { foreach (var item in user.Accounts) { account = UOW.Accounts.GetById(item.Id); break; } } MyAccountDesignReviewVM vm = new MyAccountDesignReviewVM { User = user, Account = account, DesignReview = designReview, Received = received }; return(View(vm)); }
public DesignReviewVM() { DesignReview = new DesignReview(); Projects = new List <Project>(); }