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()); }
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)); }