Rafael Brito Atividade ConverterImagem DI

16
IFRN – T ADS 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.Runti me.Serializa tion; using System.Servi ceModel; using System.Servi ceModel.Acti vation; using System.Web.C onfiguration ; 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 > ListarCategor ias() { List<Categories> lista = new List<Categories>(); SqlCommand  cmd = new SqlCommand ("GetCategories" , con); cmd.CommandT ype = System.Data. CommandType .StoredProcedure; con.Open(); try { SqlDataReader  reader = cmd.ExecuteReader(); while(reader.Read()) { Categories  c = new Categories ();

Transcript of Rafael Brito Atividade ConverterImagem DI

Page 1: Rafael Brito Atividade ConverterImagem DI

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

Page 2: Rafael Brito Atividade ConverterImagem DI

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";

Page 3: Rafael Brito Atividade ConverterImagem DI

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. 

Page 4: Rafael Brito Atividade ConverterImagem DI

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

Page 5: Rafael Brito Atividade ConverterImagem DI

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>

Page 6: Rafael Brito Atividade ConverterImagem DI

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;

}

}

}

Page 7: Rafael Brito Atividade ConverterImagem DI

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; 

Page 8: Rafael Brito Atividade ConverterImagem DI

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 >

Page 9: Rafael Brito Atividade ConverterImagem DI

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"> 

Page 10: Rafael Brito Atividade ConverterImagem DI

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> 

Page 11: Rafael Brito Atividade ConverterImagem DI

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)

{

Page 12: Rafael Brito Atividade ConverterImagem DI

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> 

Page 13: Rafael Brito Atividade ConverterImagem DI

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;

}

Page 14: Rafael Brito Atividade ConverterImagem DI

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

Page 15: Rafael Brito Atividade ConverterImagem DI

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

Page 16: Rafael Brito Atividade ConverterImagem DI

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

}

}

}

}