public HttpResponseMessage GetPDF(Guid id) { PDF pdf = new PDFRepository().GetById(id); if (pdf == null) { return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Document with id " + id + " does not exist."); } try { System.IO.FileStream stream = PDFHelper.serveFile(pdf); HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StreamContent(stream); response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf"); return response; } catch (Exception e) { return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "The PDF file with id " + id + " and name " + pdf.name + " could not be found.", e); } }
public HttpResponseMessage Create(NewSignature signature) { //General stuff if (signature==null) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Signature cannot be null"); } if (signature.recipientEmail==null) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Email cannot be null"); } //Get user or create new User user = new UserRepository().GetByEmail(signature.recipientEmail); if (user == null) { user = UserManager.createUserFromInvite(signature.recipientEmail, true); } //Retrieve PDF PDF pdf = new PDFRepository().GetById(signature.pdfId); if (pdf==null) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "PDF id is not valid"); } //Check access rights for current user UserTicket ticket = TicketManager.getTicketFromContext(this.ControllerContext); if (!pdf.document.ownerCompany.userAffiliations.Any(x => x.user.id==ticket.user.id && (x.role.name.Equals("Ejer")||x.role.name.Equals("Admin")))) { return Request.CreateErrorResponse(HttpStatusCode.Forbidden, "User permission is not sufficient"); } if (!signature.type.Equals("private") && !signature.type.Equals("business")) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Type must be either \"business\" or \"private\""); } Signature newSignature; if (signature.type.Equals("business")) { BusinessSignature tempSignature = new BusinessSignature(); if (signature.cvr==null||CompanyManager.validateCVR(signature.cvr)) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid CVR-number"); } Company company = new CompanyRepository().GetByCVR(signature.cvr); if (company==null) { company = CompanyManager.createCompany(signature.cvr, user); } //logic to determine whether user is affiliated with company and if not, decide how to affiliate him/her. Request to admin/owner? //add later tempSignature.company = company; newSignature = tempSignature; } else //== type equals private { PrivateSignature tempSignature = new PrivateSignature(); if (signature.cpr!=null) { if (signature.cpr.Length==10) { tempSignature.cpr = signature.cpr; } else { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid CPR-number"); } } else { if (signature.secure||signature.isSignature) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "CPR-number is needed for signature"); } } newSignature = tempSignature; } newSignature.creation = DateTime.Now; newSignature.user = user; newSignature.pdf = pdf; newSignature.secure = signature.secure; newSignature.isSignature = signature.isSignature; newSignature.message = signature.message; newSignature.sender = ticket.user; new SignatureRepository().Create(newSignature); return Request.CreateResponse<Signature>(HttpStatusCode.OK, newSignature); }
public HttpResponseMessage SendFromPDF(Guid id) { //Retrieve PDF PDF pdf = new PDFRepository().GetById(id); if (pdf == null) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "PDF id is not valid"); } //Check access rights for current user UserTicket ticket = TicketManager.getTicketFromContext(this.ControllerContext); if (!pdf.document.ownerCompany.userAffiliations.Any(x => x.user.id == ticket.user.id && (x.role.name.Equals("Ejer") || x.role.name.Equals("Admin")))) { return Request.CreateErrorResponse(HttpStatusCode.Forbidden, "User permission is not sufficient"); } if (pdf.signatures==null||pdf.signatures.Count==0) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Number of recipients cannot be 0"); } SignatureRepository repo = new SignatureRepository(); foreach (Signature item in pdf.signatures) { string senderMessage; if (ticket.user.firstName != null && ticket.user.lastName != null) { senderMessage = ticket.user.firstName + " " + ticket.user.lastName + " fra " + item.pdf.document.ownerCompany.name + " har anmodet dig om at læse/underskrive dokumentet " + item.pdf.document.title + "."; } else { senderMessage = item.pdf.document.ownerCompany.name + " har anmodet dig om at læse/underskrive dokumentet " + item.pdf.document.title + "."; } NotificationManager.create(item.user, senderMessage, "http://webapp.bizdoc.dk/Underskrift/" + item.id); item.sendDate = DateTime.Now; repo.Update(item); } return Request.CreateResponse<PDF>(HttpStatusCode.OK, pdf); }