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));
        }
Exemple #3
0
        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));
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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"));
        }
Exemple #8
0
        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));
        }
Exemple #11
0
        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()));
        }
Exemple #12
0
        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>();
 }
Exemple #15
0
        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));
        }
Exemple #16
0
 public DesignReviewVM()
 {
     DesignReview = new DesignReview();
     Projects     = new List <Project>();
 }