Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }