Exemplo n.º 1
0
        public async Task <IHttpActionResult> EmailCertificate([FromBody] CalibrationCertificateEmailViewModel calibrationData)
        {
            Document document;

            using (var context = new ConnectContext())
            {
                document = (Document)await context.GetDocumentAsync(calibrationData.DocumentType, calibrationData.DocumentId);

                var fullDocumentType       = calibrationData.DocumentType.GetAttributeOfType <FullDocumentTypeAttribute>().Type;
                var documentSerializedData = await context.SerializedData.FirstOrDefaultAsync(s => s.DocumentId == document.Id && s.DocumentType == fullDocumentType);

                if (documentSerializedData != null)
                {
                    document.SerializedData = documentSerializedData.Data;
                }
            }

            if (document != null && document.SerializedData != null)
            {
                try
                {
                    SendCertificate(calibrationData.Recipient, "Your Certificate From WebcalConnect.com", document);
                    return(Ok());
                }
                catch (Exception)
                {
                    return(InternalServerError());
                }
            }

            return(NotFound());
        }
Exemplo n.º 2
0
        public async Task <HttpResponseMessage> DownloadCertificate(int itemId, string itemKey)
        {
            if (!string.IsNullOrEmpty(itemKey) && itemKey == FilterDocumentType.AnalogueTachograph.ToString())
            {
                itemKey = FilterDocumentType.Tachograph.ToString();
            }

            DocumentType documentType;

            if (Enum.TryParse(itemKey, out documentType))
            {
                BaseModel model;
                using (var context = new ConnectContext())
                {
                    model = await context.GetDocumentAsync(documentType, itemId);
                }

                var    userId         = -1;
                byte[] serializedData = null;

                var document = model as Document;
                if (document != null)
                {
                    userId = document.UserId;
                    using (var context = new ConnectContext())
                    {
                        var fullDocumentType       = documentType.GetAttributeOfType <FullDocumentTypeAttribute>().Type;
                        var documentSerializedData = await context.SerializedData.FirstOrDefaultAsync(s => s.DocumentId == document.Id && s.DocumentType == fullDocumentType);

                        if (documentSerializedData != null)
                        {
                            serializedData = documentSerializedData.Data;
                        }
                    }
                }

                var report = model as BaseReport;
                if (report != null && report.ConnectUserId != null)
                {
                    userId = report.ConnectUserId.Value;

                    using (var context = new ConnectContext())
                    {
                        var docT = documentType.GetAttributeOfType <FullDocumentTypeAttribute>().Type;
                        var documentSerializedData = await context.SerializedData.FirstOrDefaultAsync(s => s.DocumentId == report.Id && s.DocumentType == docT);

                        if (documentSerializedData != null)
                        {
                            serializedData = documentSerializedData.Data;
                        }
                    }
                }

                if (userId != -1 && serializedData != null && (User.IsInRole(ConnectRoles.Admin) || User.Identity.GetUserId <int>() == userId))
                {
                    return(Pdf(serializedData, $"{itemKey}.pdf"));
                }
            }

            return(new HttpResponseMessage(HttpStatusCode.NotFound));
        }