rafael brito atividade converterimagem di
TRANSCRIPT
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 1/16
IFRN – TADS Atividade de Desenvolvimento Integrado
Aluno: Rafael Brito Pantoja Matrícula: 201014040264 - Adicionando e excluindo Categoria
1- Criando Script para excluir categoria:
CREATE Procedure RemoveCategory
(
@CategoryID int
) AS
DELETE FROM Products
WHERE CategoryID = @CategoryID
DELETE FROM Categories
WHERE CategoryID = @CategoryID
2 – Criando os métodos de adicionar e excluir categoria no serviço(dois últimos
métodos):
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;using System.Runtime.Serialization;
using System.ServiceModel;using System.ServiceModel.Activation;
using System.Web.Configuration;
namespace ProvaDI.Web{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode =AspNetCompatibilityRequirementsMode.Allowed)]
public class ServiceAcessoDados
{
private static String connectionString =
WebConfigurationManager.ConnectionStrings["RafaelDB"].ConnectionString;SqlConnection con = new SqlConnection(connectionString);
[OperationContract()]
public List<Categories> ListarCategorias()
{
List<Categories> lista = new List<Categories>();
SqlCommand cmd = new SqlCommand("GetCategories", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
con.Open();
try
{
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read()){
Categories c = new Categories();
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 2/16
c.CategoryID = Convert.ToInt32(reader["CategoryID"]);
c.CategoryName = reader["CategoryName"].ToString();
lista.Add(c);
}
return lista;
}
catch (SqlException ex){
throw new Exception("Erro=" + ex.Message);
}
finally
{
con.Close();
}
}
[OperationContract()]
public List<Products> ListarProdutosPorCategoria(int categoriaId)
{
List<Products> produtos = new List<Products>();
SqlCommand cmd = new SqlCommand("ProductsByCategory", con);cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CategoryID", categoriaId);
con.Open();
try
{
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Products p = new Products();
p.ProductID = Convert.ToInt16(reader["ProductID"]);
p.Description = reader["Description"].ToString();
p.ModelName = reader["ModelName"].ToString();p.UnitCost = Convert.ToDecimal(reader["UnitCost"]);
p.ProductImage = (byte[]) reader.GetValue(4);produtos.Add(p);
}
return produtos;
}
catch (SqlException ex)
{
throw new Exception("Erro=" + ex.Message);}
finally
{
con.Close();
}
}
[OperationContract()]
public string RemoverCategoria(int categoriaId){
SqlCommand cmd = new SqlCommand("RemoveCategory", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CategoryID", categoriaId);
con.Open();
try
{
cmd.ExecuteReader();return "sucesso";
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 3/16
}
catch (SqlException ex)
{
throw new Exception("Erro=" + ex.Message);
}
finally
{con.Close();
}
}
[OperationContract()]
public string AdicionarCategoria(string categoriaNome)
{
string sqlIns = "INSERT INTO Categories (CategoryName) VALUES
(@categoriaNome)";
SqlCommand cmd = new SqlCommand(sqlIns, con);
cmd.Parameters.AddWithValue("@categoriaNome", categoriaNome);
con.Open();try
{
cmd.ExecuteNonQuery();
return "sucesso";
}
catch (SqlException ex)
{
throw new Exception("Erro=" + ex.Message);
}
finally
{
con.Close();
}}
}
}
3 – Criando evento pra remover categoria selecionada quando clicar no botão
“Excluir Categoria”:
MainPage.xaml <Button Content="excluir categoria" HorizontalAlignment="Left"
Margin="444,153,0,0" VerticalAlignment="Top" Style="{StaticResource
ButtonStyle}" Grid.Row="0" Click="Button_Click_1"/>
Criar variável para guardar id da categoria selecionada e setar seu valor
quando clicar em cima de uma categoria.
int categoriaId = -1;
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Grid g = sender as Grid;
TextBlock tb = g.Children[0] as TextBlock;//Anexar um manipulador de eventos para o evento completed.
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 4/16
cliente.ListarProdutosPorCategoriaCompleted +=
cliente_ListarProdutosPorCategoriaCategoriaCompleted;
//Inicia a chamada ao serviço web
cliente.ListarProdutosPorCategoriaAsync(Convert.ToInt32(tb.Text));
categoriaId = (Convert.ToInt32(tb.Text));
}
4 – Definindo o evento que vai ser chamado quando clicar no botão de excluir
categoria:
MainPage.xaml.cs
private void Button_Click_1(object sender, RoutedEventArgs e)
{
if (categoriaId == -1)
{
MessageBox.Show("Nenhuma Categoria Selecionada");
}
else
{cliente.RemoverCategoriaCompleted +=
cliente_RemoverCategoriaCompleted;
cliente.RemoverCategoriaAsync(categoriaId);
}
}
void cliente_RemoverCategoriaCompleted(object sender,ProvaReferencia.RemoverCategoriaCompletedEventArgs e)
{
if (e.Result == "sucesso")
{
Button_Click(listarCategorias, null);
MessageBox.Show("Categoria removida com sucesso");categoriaId = -1;
}
else
{MessageBox.Show(e.Result);
}
}
5 – Criando a janela de adicionar categoria:
Add>New Item> Silverlight Child Window
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 5/16
Figura 1- Criando modal de cadastro de categoria
CadCategoria.xaml
<controls:ChildWindow x:Class="ProvaDI.CadCategoria"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:controls="clr-
namespace:System.Windows.Controls;assembly=System.Windows.Controls"
Width="285.512" Height="117.078"
Title="Adicionar Categoria"> <Grid x:Name="LayoutRoot" Margin="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="65"/>
<ColumnDefinition Width="59*"/>
<ColumnDefinition Width="140*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Margin="3">Categoria:</TextBlock>
<TextBox x:Name="txtCategoriaNome" Grid.Row="0" Grid.Column="1"
Margin="3,3,0,3" Width="150" HorizontalAlignment="Left"
Grid.ColumnSpan="2"></TextBox>
<Button x:Name="OKButton" Content="Salvar" Click="OKButton_Click"
Width="75" Height="23" HorizontalAlignment="Left" Margin="0,12,0,0" Grid.Row="1"
Grid.Column="1" Grid.ColumnSpan="2"/>
<Button x:Name="CancelButton" Content="Cancelar"
Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Left" Margin="41.371,12,0,0" Grid.Row="1" Grid.Column="2" />
</Grid>
</controls:ChildWindow>
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 6/16
6 – Chamando o método de adicionar categoria na janela modal:
CadCategoria.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;using System.Net;
using System.Windows;using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using ProvaDI.ProvaReferencia;
namespace ProvaDI
{public partial class CadCategoria : ChildWindow
{ProvaReferencia.ServiceAcessoDadosClient cliente;
public CadCategoria(ProvaReferencia.ServiceAcessoDadosClient client)
{
InitializeComponent();cliente = client;
}
private void OKButton_Click(object sender, RoutedEventArgs e)
{
cliente.AdicionarCategoriaCompleted
+=cliente_AdicionarCategoriaCompleted;
cliente.AdicionarCategoriaAsync(txtCategoriaNome.Text);}
void cliente_AdicionarCategoriaCompleted(object sender,
ProvaReferencia.AdicionarCategoriaCompletedEventArgs e)
{
if (e.Result == "sucesso")
{
this.DialogResult = true;
}
else
{MessageBox.Show(e.Result);
this.DialogResult = false;
}
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
}
}
}
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 7/16
7 – Chamando a tela de cadastro na página principal
MainPage.xaml
<Button Content="Adicionar categoria" HorizontalAlignment="Left"
Margin="663,153,0,0" VerticalAlignment="Top" Style="{StaticResource
ButtonStyle}" Grid.Row="0" Click="Button_Click_2"/>
MainPage.xaml.cs
private CadCategoria categoriaCad = new CadCategoria(cliente);
public MainPage()
{
InitializeComponent();categoriaCad.Closed += new EventHandler(categoriaCad_Closed);
}
private void Button_Click_2(object sender, RoutedEventArgs e)
{categoriaCad.Show();
}
void categoriaCad_Closed(object sender, EventArgs e)
{
if (categoriaCad.DialogResult == true){
Button_Click(listarCategorias, null);
MessageBox.Show("Categoria adcicionada com sucesso");
}
}
- Exibir Imagem do produto no datagrid1 - Necessário redefinir a tabela de Produto para suportar imagens em binário.
use [store]
ALTER TABLE Products
ALTER COLUMN ProductImage varbinary(MAX)
2 - Inserindo um produto com imagem local:
use [store]
GO SET IDENTITY_INSERT Products ON
GO
INSERT INTO
Products(ProductID,CategoryID,ModelNumber,ModelName,UnitCost,Description,ProductI
mage)
SELECT 410 as ProductID,
16 as CategoryID,
'RU027' as ModelNumber,
'Modelo Teste' as ModelName,
2.00 as UnitCost,
'Descrição' as [Description],
* FROM OPENROWSET(BULK 'D:\armored_titan_by_sohai9132-d66i68w.jpg',
SINGLE_BLOB) AS ProductImage;
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 8/16
SET IDENTITY_INSERT Products OFF
GO
3 – Mudar a linha em que se pega a imagem na hora de listar:
p.ProductImage = (byte[]) reader.GetValue(4);
4 – Criando o conversor de imagem
namespace ProvaDI
{
public class ConversorByteArrayImage : IValueConverter
{public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
MemoryStream ms = new MemoryStream((byte[])value);
BitmapImage image = new BitmapImage();image.SetSource(ms);
return image;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
5 – Disponibilizando o conversor na página:
<UserControl.Resources >
<local:ConversorDePreco x:Key="ConverterPreco"></local:ConversorDePreco>
<local:ConversorByteArrayImage
x:Key="ConverterArrayImagem"></local:ConversorByteArrayImage>
</UserControl.Resources>
6 – Inserindo template para exibir imagem no dataGrid:
<sdk:DataGridTemplateColumn Header="Imagem">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate> <Image Width="50" Height="98" Source="{Binding
ProductImage, Converter={StaticResource ConverterArrayImagem}}" />
</DataTemplate> </sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn >
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 9/16
Código-Fonte:
App.xaml
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ProvaDI.App"
>
<!--nao e possivel utilizar o Type Control no silverlight para aplicar em
diferentes controles-->
<Application.Resources>
<Style x:Key="ControlBaseStyle" TargetType="Control"> <Setter Property="Foreground" Value="DarkGreen"/>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="DarkGreen"
Offset="0.5"></GradientStop> <GradientStop Color="LightGreen"
Offset="0.2"></GradientStop>
</LinearGradientBrush>
</Setter.Value> </Setter>
</Style>
<Style x:Key="ButtonStyle" TargetType="Button" BasedOn="{StaticResource ControlBaseStyle}">
<Setter Property="Width" Value="200"/>
<Setter Property="Height" Value="30"/> <Setter Property="BorderBrush" Value="Red"/>
</Style>
</Application.Resources>
</Application>
MainPage.xaml
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
x:Class="ProvaDI.MainPage"
xmlns:local ="clr-namespace:ProvaDI"
mc:Ignorable="d" Height="459.94">
<UserControl.Resources > <local:ConversorDePreco x:Key="ConverterPreco"></local:ConversorDePreco>
<local:ConversorByteArrayImage
x:Key="ConverterArrayImagem"></local:ConversorByteArrayImage>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White" Margin="10,0,10,60" Width="auto" HorizontalAlignment="Stretch">
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 10/16
<Grid.RowDefinitions>
<RowDefinition Height="192*"/>
<RowDefinition Height="217*"/>
</Grid.RowDefinitions>
<ListBox x:Name="listaCategorias" Height="143" VerticalAlignment="Top"
ItemContainerStyle="{StaticResource ControlBaseStyle}">
<ListBox.ItemTemplate> <DataTemplate>
<Border BorderBrush="Black" CornerRadius="3"
BorderThickness="1" HorizontalAlignment="Stretch">
<Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown"
Height="30" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="100" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding CategoryID}" FontWeight="Bold"/>
<TextBlock Grid.Column="1" Grid.Row="1"
Text="{Binding CategoryName}" />
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Name="listarCategorias" Content="Listar Categorias"
HorizontalAlignment="Left" Margin="229,153,0,0" VerticalAlignment="Top"
Click="Button_Click" Style="{StaticResource ButtonStyle}" Grid.Row="0" />
<Button Content="excluir categoria" HorizontalAlignment="Left"
Margin="444,153,0,0" VerticalAlignment="Top" Style="{StaticResource ButtonStyle}" Grid.Row="0" Click="Button_Click_1"/>
<Button Content="Adicionar categoria" HorizontalAlignment="Left" Margin="663,153,0,0" VerticalAlignment="Top" Style="{StaticResource
ButtonStyle}" Grid.Row="0" Click="Button_Click_2"/>
<sdk:DataGrid Name="datagridProdutos" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" Width="Auto" Grid.Row="1" AutoGenerateColumns="False"
RowHeight="70" Margin="0,0,0,51" >
<sdk:DataGrid.Columns> <sdk:DataGridTextColumn Header="Produto" Width="100"
Binding="{Binding ModelName}" />
<sdk:DataGridTextColumn Header="Preço" Width="80"
Binding="{Binding UnitCost, Converter={StaticResource ConverterPreco}}" />
<sdk:DataGridTextColumn Header="Descrição" Width="400"
Binding="{Binding Description}">
<sdk:DataGridTextColumn.ElementStyle> <Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style> </sdk:DataGridTextColumn.ElementStyle>
</sdk:DataGridTextColumn>
<sdk:DataGridTemplateColumn Header="Imagem">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Width="50" Height="98" Source="{Binding
ProductImage, Converter={StaticResource ConverterArrayImagem}}" />
</DataTemplate> </sdk:DataGridTemplateColumn.CellTemplate>
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 11/16
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</Grid>
</UserControl>
MainPage.xaml.cs
namespace ProvaDI
{
public partial class MainPage : UserControl
{
static ProvaReferencia.ServiceAcessoDadosClient cliente = new ProvaReferencia.ServiceAcessoDadosClient();
int categoriaId = -1;
private CadCategoria categoriaCad = new CadCategoria(cliente);
public MainPage()
{
InitializeComponent();
categoriaCad.Closed += new EventHandler(categoriaCad_Closed);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//Anexar um manipulador de eventos para o evento completed.
cliente.ListarCategoriasCompleted +=
cliente_ListarCategoriasCompleted;
//Inicia a chamada ao serviço web
cliente.ListarCategoriasAsync();}
void cliente_ListarCategoriasCompleted(object sender,
ProvaReferencia.ListarCategoriasCompletedEventArgs e)
{
List<Categories> lista = e.Result.ToList();
listaCategorias.ItemsSource = lista;
}
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs
e)
{Grid g = sender as Grid;
TextBlock tb = g.Children[0] as TextBlock;
//Anexar um manipulador de eventos para o evento completed.
cliente.ListarProdutosPorCategoriaCompleted +=
cliente_ListarProdutosPorCategoriaCategoriaCompleted;//Inicia a chamada ao serviço web
cliente.ListarProdutosPorCategoriaAsync(Convert.ToInt32(tb.Text));
categoriaId = (Convert.ToInt32(tb.Text));
}
void cliente_ListarProdutosPorCategoriaCategoriaCompleted(object sender,
ProvaReferencia.ListarProdutosPorCategoriaCompletedEventArgs e)
{
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 12/16
List<Products> lista = e.Result.ToList();
datagridProdutos.ItemsSource = lista;
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
if (categoriaId == -1){
MessageBox.Show("Nenhuma Categoria Selecionada");
}
else
{
cliente.RemoverCategoriaCompleted +=
cliente_RemoverCategoriaCompleted;
cliente.RemoverCategoriaAsync(categoriaId);
}
}
void cliente_RemoverCategoriaCompleted(object sender,
ProvaReferencia.RemoverCategoriaCompletedEventArgs e)
{if (e.Result == "sucesso")
{
Button_Click(listarCategorias, null);
MessageBox.Show("Categoria removida com sucesso");
categoriaId = -1;
}
else
{
MessageBox.Show(e.Result);
}
}
private void Button_Click_2(object sender, RoutedEventArgs e){
categoriaCad.Show();}
void categoriaCad_Closed(object sender, EventArgs e)
{
if (categoriaCad.DialogResult == true)
{
Button_Click(listarCategorias, null);MessageBox.Show("Categoria adcicionada com sucesso");
}
}
}
}
CadCategoira.xaml
<controls:ChildWindow x:Class="ProvaDI.CadCategoria"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-
namespace:System.Windows.Controls;assembly=System.Windows.Controls"
Width="285.512" Height="117.078"
Title="Adicionar Categoria">
<Grid x:Name="LayoutRoot" Margin="2">
<Grid.ColumnDefinitions>
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 13/16
<ColumnDefinition Width="65"/>
<ColumnDefinition Width="59*"/>
<ColumnDefinition Width="140*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" /> </Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Margin="3">Categoria:</TextBlock>
<TextBox x:Name="txtCategoriaNome" Grid.Row="0" Grid.Column="1"
Margin="3,3,0,3" Width="150" HorizontalAlignment="Left"
Grid.ColumnSpan="2"></TextBox>
<Button x:Name="OKButton" Content="Salvar" Click="OKButton_Click"
Width="75" Height="23" HorizontalAlignment="Left" Margin="0,12,0,0" Grid.Row="1"
Grid.Column="1" Grid.ColumnSpan="2"/>
<Button x:Name="CancelButton" Content="Cancelar"
Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Left"
Margin="41.371,12,0,0" Grid.Row="1" Grid.Column="2" />
</Grid>
</controls:ChildWindow>
CadCategoria.xaml.cs
namespace ProvaDI
{
public partial class CadCategoria : ChildWindow
{
ProvaReferencia.ServiceAcessoDadosClient cliente;
public CadCategoria(ProvaReferencia.ServiceAcessoDadosClient client){
InitializeComponent();
cliente = client;}
private void OKButton_Click(object sender, RoutedEventArgs e)
{cliente.AdicionarCategoriaCompleted
+=cliente_AdicionarCategoriaCompleted;
cliente.AdicionarCategoriaAsync(txtCategoriaNome.Text);}
void cliente_AdicionarCategoriaCompleted(object sender,
ProvaReferencia.AdicionarCategoriaCompletedEventArgs e)
{if (e.Result == "sucesso")
{this.DialogResult = true;
}
else
{
MessageBox.Show(e.Result);
this.DialogResult = false;
}
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{ this.DialogResult = false;
}
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 14/16
}
}
ConversorByteArrayImage.cs
namespace ProvaDI
{
public class ConversorByteArrayImage : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{MemoryStream ms = new MemoryStream((byte[])value);
BitmapImage image = new BitmapImage();
image.SetSource(ms);return image;
}
public object ConvertBack(object value, Type targetType, object
parameter, CultureInfo culture)
{
throw new NotImplementedException();}
}
}
ServiceAcessoDados.svc
namespace ProvaDI.Web
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
public class ServiceAcessoDados
{
private static String connectionString =WebConfigurationManager.ConnectionStrings["RafaelDB"].ConnectionString;
SqlConnection con = new SqlConnection(connectionString);
[OperationContract()]
public List<Categories> ListarCategorias()
{
List<Categories> lista = new List<Categories>();SqlCommand cmd = new SqlCommand("GetCategories", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
con.Open();try
{
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
Categories c = new Categories();
c.CategoryID = Convert.ToInt32(reader["CategoryID"]);c.CategoryName = reader["CategoryName"].ToString();
lista.Add(c);}
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 15/16
return lista;
}
catch (SqlException ex)
{
throw new Exception("Erro=" + ex.Message);
}
finally {
con.Close();
}
}
[OperationContract()]
public List<Products> ListarProdutosPorCategoria(int categoriaId)
{
List<Products> produtos = new List<Products>();
SqlCommand cmd = new SqlCommand("ProductsByCategory", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CategoryID", categoriaId);
con.Open();
try
{
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Products p = new Products();
p.ProductID = Convert.ToInt16(reader["ProductID"]);
p.Description = reader["Description"].ToString();
p.ModelName = reader["ModelName"].ToString();
p.UnitCost = Convert.ToDecimal(reader["UnitCost"]);
p.ProductImage = (byte[]) reader.GetValue(4);
produtos.Add(p);
}return produtos;
}catch (SqlException ex)
{
throw new Exception("Erro=" + ex.Message);
}
finally
{
con.Close();}
}
[OperationContract()]
public string RemoverCategoria(int categoriaId)
{SqlCommand cmd = new SqlCommand("RemoveCategory", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CategoryID", categoriaId);con.Open();
try
{
cmd.ExecuteReader();
return "sucesso";
}
catch (SqlException ex)
{throw new Exception("Erro=" + ex.Message);
8/14/2019 Rafael Brito Atividade ConverterImagem DI
http://slidepdf.com/reader/full/rafael-brito-atividade-converterimagem-di 16/16
}
finally
{
con.Close();
}
}
[OperationContract()]
public string AdicionarCategoria(string categoriaNome)
{
string sqlIns = "INSERT INTO Categories (CategoryName) VALUES
(@categoriaNome)";
SqlCommand cmd = new SqlCommand(sqlIns, con);
cmd.Parameters.AddWithValue("@categoriaNome", categoriaNome);
con.Open();
try
{
cmd.ExecuteNonQuery();
return "sucesso";}
catch (SqlException ex)
{
throw new Exception("Erro=" + ex.Message);
}
finally
{
con.Close();
}
}
}
}