/// <summary> /// Busca uma imagem por ID /// </summary> /// <param name="idIncident"></param> /// <param name="idIncidentImage"></param> /// <param name="fullImage"></param> /// <returns></returns> public IncidentAssessmentImage FindImage(int idIncident, int idIncidentImage, bool fullImage = false) { try { var @param = new { idIncident = idIncident, idIncidentAssessmentImage = idIncidentImage, FullImage = fullImage }; IncidentAssessmentImage _incidentAssessmentImage = this.Conexao .QueryFirstOrDefault <IncidentAssessmentImage>( @"SELECT Name, MimeType, case when @fullimage = 1 then [Image] Else null END as [Image], Thumbnail FROM IncidentAssessmentImage WITH(NOLOCK) WHERE IdIncidentAssessment = @idIncident AND IdIncidentAssessmentImage = @IdIncidentAssessmentImage ", param: param, transaction: this.Transacao); return(_incidentAssessmentImage); } catch (Exception ex) { throw ex; } }
/// <summary> /// Adicionar Imagem ao Incidente /// </summary> /// <param name="incidentAssessment"></param> /// <param name="inicidentImage"></param> /// <returns></returns> public bool AddImage(string incidentKey, IncidentAssessmentImage inicidentImage) { bool returnAdd = false; try { //Cria um novo Incident IncidentAssessment incidentAssessment = new IncidentAssessment(incidentKey); //Busca o incident na base incidentAssessment = this._workRepository.IncidentAssessmentRepository.Find(incidentAssessment.Id); //se não encontrar o incident retorna false if (incidentAssessment == null) { return(false); } if (incidentAssessment.Status != StatusIncidentAssessment.Finalized) { //generate thumbanail from image stream if (inicidentImage.Image.Length > 0) { inicidentImage.Thumbnail = GetJpegThumbnail(inicidentImage.Image, 200, 200); } //cria uma transacao this._workRepository.BeginTransaction(); //adiciona a imagem returnAdd = this._workRepository.IncidentAssessmentRepository.AddImage(incidentAssessment, inicidentImage); //add history this.CreateHistory(incidentAssessment, this.LogHistoryUser, TypeOperation.AddImage, this._workRepository); //Rollback na transacao this._workRepository.Commit(); } } catch (Exception ex) { //rollback na transacao this._workRepository.RollBack(); throw ex; } return(returnAdd); }
/// <summary> /// Recupera a image adicionada por ID /// </summary> /// <param name="idIncident"></param> /// <param name="idIncidentImage"></param> /// <returns></returns> public IncidentAssessmentImage GetImage(string key, int idIncidentImage) { try { IncidentAssessment IncidentAssessment = new IncidentAssessment(key); //Recupera a imagem var image = this._workRepository.IncidentAssessmentRepository.FindImage(IncidentAssessment.Id, idIncidentImage, true); //Objeto de retorno return(image ?? (image = new IncidentAssessmentImage())); } catch (Exception ex) { throw ex; } }
/// <summary> /// Adiciona uma image /// </summary> /// <param name="incidentAssessment"></param> /// <param name="inicidentImage"></param> /// <returns></returns> public bool AddImage(IncidentAssessment incidentAssessment, IncidentAssessmentImage inicidentImage) { try { var param = new DynamicParameters(); param.Add("@IdIncidentAssessment", incidentAssessment.Id, DbType.Int32, ParameterDirection.Input); param.Add("@Name", inicidentImage?.Name, DbType.String, ParameterDirection.Input, 200); param.Add("@MimeType", inicidentImage?.MimeType, DbType.String, ParameterDirection.Input, 50); param.Add("@Image", inicidentImage?.Image, DbType.Binary, ParameterDirection.Input); param.Add("@Thumbnail", inicidentImage?.Thumbnail, DbType.Binary, ParameterDirection.Input); string sqlStatement = @"INSERT INTO IncidentAssessmentImage (IdIncidentAssessment, Name, MimeType, Image, Thumbnail) VALUES (@IdIncidentAssessment, @Name, @MimeType, @Image, @Thumbnail) "; return(this.Conexao.Execute(sqlStatement, param: param, transaction: this.Transacao) > 0); } catch (Exception ex) { throw ex; } }
public async Task <IHttpActionResult> AddIncidentAssessmentImage([FromUri, Required(AllowEmptyStrings = false)] string key, [FromBody] SendImage image) { byte[] ImageBinaryContent; if (!ModelState.IsValid) { return(BadRequest(ModelState)); } else if (image == null) { return(BadRequest("")); } if (image.File.InputStream.CanSeek) { image.File.InputStream.Seek(0, SeekOrigin.Begin); } using (var br = new BinaryReader(image.File.InputStream)) { ImageBinaryContent = br.ReadBytes(image.File.ContentLength); } IncidentAssessmentImage incidentImage = new IncidentAssessmentImage() { MimeType = image.File.ContentType, Name = image.File.FileName, Image = ImageBinaryContent }; bool result = await Task.Run(() => this._incidentAssessmentService.AddImage(key, incidentImage)); return(Ok(result)); }