public IHttpActionResult PutLearningPlan(int id, LearningPlanDTO item) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != item.Id) { return(BadRequest()); } var currentUser = AppUserManager.FindById(User.Identity.GetUserId()); var coachingProgram = GetCoachingPrograms(currentUser) .FirstOrDefault(i => i.Id == item.Id); if (id != item.Id) { return(BadRequest("Learning Program Not Found")); } coachingProgram.LearningPlan = item.LearningPlan; AppDb.Entry(coachingProgram).Property(i => i.LearningPlan).IsModified = true; coachingProgram.UpdatedAt = DateTime.Now; AppDb.Entry(coachingProgram).Property(i => i.UpdatedAt).IsModified = true; try { AppDb.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!CoachingProgramExists(id, currentUser)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public IHttpActionResult PostSendEmailWithPDF(int id, PostSendEmailWithPDFRequest request) { var currentUser = AppUserManager.FindById(User.Identity.GetUserId()); var program = GetCoachingPrograms(currentUser) .FirstOrDefault(i => i.Id == id); var lp = new LearningPlanDTO { Id = program.Id, LearningPlan = program.LearningPlan, UpdatedAt = program.UpdatedAt, CoachingProgram = program, }; var emailHtml = ViewRenderer.RenderView("~/Views/Email/Send Learning Plan as PDF.cshtml", new System.Web.Mvc.ViewDataDictionary { { "Program", program }, }); using (var fileStream = new MemoryStream()) { var coacheeName = String.Format("{0} {1}", currentUser.FirstName, currentUser.LastName); var subject = String.Format("right.now. Coaching Learning Plan for {0}", coacheeName); var html = ViewRenderer.RenderView("~/Views/LearningPlanPDF.cshtml", lp); var converter = new SelectPdf.HtmlToPdf(); converter.Options.MarginTop = 35; converter.Options.MarginBottom = 35; var doc = converter.ConvertHtmlString(html); doc.Save(fileStream); fileStream.Position = 0; var attachment = new Attachment(fileStream, subject, "application/pdf"); EmailSender.SendEmail(request.recipients, subject, emailHtml, attachment); } return(StatusCode(HttpStatusCode.NoContent)); }