Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кузьмич КУРСОВА ТРПЗ.docx
Скачиваний:
31
Добавлен:
04.06.2020
Размер:
1.89 Mб
Скачать

3.Опис програми

Програма була розроблена для замовлення ремонту комп’ютерів, ремонту комп’ютерів та перегляду деталей комп’ютеру. Програма має інтуїтивно зрозумілий інтрефейс, невеликі потреби до ресурсів комп’ютера, що може зацікавите свого користувача.

Клієнтський додаток містить такі функції:

  • можливість створення замвлення ремонту комп’ютера;

  • можливість реєстрації нових користувачів;

  • виконання замовлення працівником.

Була створена зручна система переходу між вікнами.

Вхідні данні вводяться користувачем через клавіатуру та за допомогою миші. Вихідні данні виводяться у texbox-ax на відповідних вкладках.

При невірних діях користувача програма виводить опис помилки.

3.1 Керівництво програміста

Програма не використовує сторонній зовнішніх бібліотек або драйверів.

Мінімальні апаратні вимоги:

-версія dot.net Framework 4.6;

- оперативна пам’ять 512Мб;

- мінімум 300МБ пам’яті на жорсткому диску;

- операційна система Windows;

- графічний пристрій із підтримкою DirectX9.

Вимоги до деінсталяції:

  • видалити папку із програмою.

3.2 Керівництво користувача

При старті програми користувач побачить вікно із зображенням ремонту комп’ютера та кнопками (див. рис. 3.1) , які дозволять йому переглянути програму, пройти логін або пройти реєстрацію, увійти в систему та перейти до головного вікна [1].

Рисунок 3.1 – Головне вікно

Якщо ми натиснемо на кнопку «View» (для неавторизованих користувачів) відкриється вікно в якому ми зможемо переглянути список комп’ютерів (див. рис. 3.2) [1].

Рисунок 3.2 – Вікно перегляду

Якщо користувач натисне на конпку «Login» то відкриється вікно логіну, яке вміщує в собі компоненти за допомогою який можна здійснити логій та ввійти в систему (див. рис. 3.3)[1].

Рисунок 3.3 – Вікно логіну

Після правильно введених даних користувачем отримаємо сповіщення про успішну авторизацію, яка інформує нас про те що, дані успішно перевірені та доступ дозволено (див. рис. 3.4) [1].

Рисунок 3.4 – Вікно успішного логіну

Також ми можемо перейти до вікна реєстрації (див. рис.3.5), натиснувши на кнопку «Register» і перейти до вікна реєстрації [1].

Рисунок 3.5 – Вікно неправильно введених паролів

Після заповнення полів ми можемо пересвідчитися в тому, що паролі потрібно ввести правильно (див. рис.3.5).

Рисунок 3.6 – Успішна реєстрація

Якщо ми ввели паролі правильно (див. рис.3.6) то користувач успішно здійснить реєстрацію та отримає доступ до системи [1].

В головному вікні ми можемо побачити список комп’ютерів якій можна змінювати, а саме: додавати, видаляти, редагувати та замовляти комп’ютер. Додавати та редагувати також доступню у нових вікнах (див. рис.3.7).

Рисунок 3.7 – Головне вікно

Спробуємо вибрати один із комп’ютерів (див. рис.3.8) та змінити одну з його властивостей , ввівши нові дані в одному із доступних компонентів, та натиснути на кнопку «Update» (див. рис.3.8) [1].

Рисунок 3.8 – Вікно зміни параметрів комп’ютера

Натиснемо на кнопку «Add in window», нам відкриється нове вікно, де користувач зможе заповнити поля та натиснути на кнопку «add in window» (див. рис. 3.9).

Рисунок 3.9 – Вікно додавання комп’ютера

Якщо користувач заповнить всі поля правильно та натисте на кнопку «add in window» то новий комп’ютер буде додано в систему (див. рис. 3.10).

Виберемо комп’ютер та додамо його в корзину, натистувши спочатку на комп’ютер, а потім на кнопку «Order» (див. рис. 3.10).

Рисунок 3.10 – Додавання комп’ютера в корзину

Натиснемо на кнопку «Orders» та перейдемо до вікна замовлення. (див. рис. 3.11). Заповнимо поля та натиснемо на кнопку «Order». Дані будуть оброблені та ми отримаємо сповіщення про успішне формування замовлення (див. рис. 3.11).

Рисунок 3.11 – Вікно сформованого замовлення

Пройдемо логін як працівник (див. рис. 3.4) та перейдемо до вікна працівника, де ми можемо побачити список комп’ютерів, які замовили на ремонт. (див. рис. 3.12).

Рисунок 3.12 – Вікно замовлення працівника

Виберемо комп’ютер та натиснемо на конпку «Components» та перейдемо до вікна компонентів (див. рис. 3.13).

Рисунок 3.13 – Вікно компонентів комп’ютера

Виберемо несправну деталь та відремонтуємо її, натиснувши на кнопку «Repair». Отримаємо сповіщення про відремонтовану деталь та номер комп’ютера (див. рис. 3.14).

Рисунок 3.14 – Вікно ремонту деталі

Перейдемо до головного вікна працівника та натиснемо на кнопку «Repair». Отримаємо сповіщення про успішне виконання замовлення (див. рис. 3.15).

Рисунок 3.15 – Успішний ремонт комп’ютера

ВИСНОВКИ

В результаті проведеної роботи було розроблено додаток ремонт комп’ютерів. Вдосконалено знання та навички з дисципліни Технології розроблення програмного забезпечення-2. При написанні програми було використано та удосконалоно навички використання технологією .Net. Також було вивчено синтаксис мови програмування С#. Було використано метод об’єктно-орієнтованого програмування та компонентно-орієнтованого програмування для формування звязків між бібліотеками класів, консольних додатків та Windows Presentation Foundation додатків. Було використано наслідування, інкапсуляцію, поліморфізм.  Реалізовано на практиці підхід SOLID, який допоміг встановити чітку структуру взаємодії між класами.  Було використано шаблони Репозиторій для взаємодії з базою даних Sql Server. Використано запити вибірки, редагування, зчитування інформації із бази даних. Теоретичні відомості з використання шаблону MVVM було вивчено та реалізовано на практиці. Даний шаблон допоміг використати привязку даних із вікна WPF, використавши вбудований інтерфейс взаємодії та команди. Було вивчено структуру вікна WPF, а саме мову XAML. Інтерфейс програми було побудовано із використанням даної мови розмітки та вивчено компоненти для зчитування інформації та взаємодії із користувачем. Також було вивчено будову інтегрованого середовища для розробки Visual Studio, його компонентів та засобів трасування додатку.

За допомогою цієї програми можна додавати, редагувати, видаляти комп’ютери, замовляти ремонт, відсилати дані на сервери та проводити ремонт деталі та виконувати замовлення.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

  1. Словник іншомовних слів Мельничука [Електронний ресурс]- Режим доступа:

http://slovopedia.org.ua/42/53407/288564.html

  1. Шилдт Г. C# 4.0 Полное руководство. [Текст] : Пер. с англ. – М.: ООО «И.Д.Вильямс», 2011. – 1056 с.

  2. Алгоритм пошуку. [Електронний ресурс] – Режим доступа: https://uk.wikipedia.org/wiki/Алгоритм_пошуку

  3. Microsoft Docs [Електронний ресурс]- Режим доступа:

https://docs.microsoft.com/uk-ua/

  1. Windows Presentation Foundation [Електронний ресурс] – Режим доступа:

https://en.wikipedia.org/wiki/Windows_Presentation_Foundation

  1. Вікіпедія ООП [Електронний ресурс]- Режим доступа:

https://uk.wikipedia.org/wiki/Об%27єктно-орієнтоване_програмування

  1. Парадигма програмування [Електронний ресурс] – Режи доступа:

https://uk.wikipedia.org/wiki/Парадигма_програмування

  1. Вікіпедія Компонентно-орієнтоване програмування [Електронний ресурс]- Режим доступа:

https://uk.wikipedia.org/wiki/Компонентно-орієнтоване_програмування

  1. Model-View-ViewModel [Електронний ресурс]- Режим доступа:

https://uk.wikipedia.org/wiki/Model-View-ViewModel

  1. Принципи solid [Електронний ресурс]- Режим доступа:

https://uk.wikipedia.org/wiki/SOLID_(об%27єктно-орієнтоване_програмування)

  1. Microsoft SQL Server [Електронний ресурс]- Режим доступа:

https://uk.wikipedia.org/wiki/Microsoft_SQL_Server

  1. UML [Електронний ресурс]- Режим доступа:

https://www.uml.org/

  1. Діаграма прецидентів [Електронний ресурс]- Режим доступа:

https://uk.wikipedia.org/wiki/Діаграма_прецедентів

  1. Діаграма класів [Електронний ресурс]- Режим доступа:

https://uk.wikipedia.org/wiki/Діаграма_класів

  1. Repository [Електронний ресурс]- Режим доступа:

https://uk.wikipedia.org/wiki/Repository

  1. Методичні матеріали з дисципліни «Технології розроблення програмного забезпечення-2» [Електронний ресурс]- Режим доступа:

https://studfile.net/preview/5065022/page:3/

  1. What is LocalDB? [Електронний ресурс]- Режим доступа:

https://expressdb.io/sql-server-express-vs-localdb.html

  1. Методичні матеріали з дисципліни «ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ» [Електронний ресурс]- Режим доступа:

https://studfile.net/preview/5462335/

  1. METANIT.COM [Електронний ресурс]- Режим доступа:

https://metanit.com/

  1. Windows Presentation Foundation [Електронний ресурс]- Режим доступа:

https://uk.wikipedia.org/wiki/Windows_Presentation_Foundation

  1. Stackoverflow [Електронний ресурс]- Режим доступа:

https://stackoverflow.com/

ДОДАТОК А (ЛІСТИНГ ПРОГРАМИ)

Тест програми «Ремонт комп’ютерів»

Лістинг А.1 – Клас «GenericRepository» (файл GenericRepository.cs)

public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class

{

public ApplicationContext Context { get; set; }

public DbSet<TEntity> DbSet

{

get { return Context.Set<TEntity>(); }

}

public GenericRepository(ApplicationContext context)

{

Context = context;

}

public void Create(TEntity entity)

{

DbSet.Add(entity);

Context.SaveChanges();

}

public void Delete(TEntity entity)

{

DbSet.Remove(entity);

Context.SaveChanges();

}

public IEnumerable<TEntity> GetAll()

{

return DbSet.ToList();

}

public TEntity GetById(int id)

{

return DbSet.Find(id);

}

public void Update(TEntity entity)

{

Context.Entry(entity).State = EntityState.Modified;

Context.SaveChanges();

}

}

Лістинг А.2 – Клас «ItemRepositoryADO» (файл ItemRepositoryADO.cs)

public class ItemRepositoryADO : IRepository<Item>

{

private readonly string connectionString;

SqlDataAdapter adapter;

DataTable itemsTable;

string error;

DataTable detailsTable;

public List<Detail> GetDetails(int itemId)

{

detailsTable = new DataTable();

string sql = "select * from detail " +

"where Item_Id = @itemId";

List<Detail> result = new List<Detail>();

try

{

SqlConnection connection = new SqlConnection(connectionString);

SqlCommand command = new SqlCommand(sql, connection);

SqlParameter itemIdParam = new SqlParameter("@itemId", itemId);

command.Parameters.Add(itemIdParam);

adapter = new SqlDataAdapter(command);

connection.Open();

adapter.Fill(detailsTable);

foreach (DataRow row in detailsTable.Rows)

{

var el = new Detail

{

Company = row["Company"].ToString(),

ImagePath = row["ImagePath"].ToString(),

Title = row["Title"].ToString(),

Price = Convert.ToInt32(row["Price"]),

Id = Convert.ToInt32(row["Id"]),

Item_Id = Convert.ToInt32(row["Item_Id"]),

Status = Convert.ToInt32(row["Status"]) == 1 ? true : false

};

result.Add(el);

}

if (connection != null)

connection.Close();

if (detailsTable != null)

detailsTable.Clear();

}

catch (Exception ex)

{

}

return result;

}

public void RepairDetail(int detailId)

{

string sql = "Update detail set status = 1 " +

"where id = @detailId";

try

{

using (SqlConnection conn = new SqlConnection(connectionString))

{

conn.Open();

SqlCommand command = new SqlCommand(sql, conn);

SqlParameter detailIdParam = new SqlParameter("@detailId", detailId);

command.Parameters.Add(detailIdParam);

int num = command.ExecuteNonQuery();

command.Dispose();

if (conn != null)

conn.Close();

}

}

catch (Exception ex)

{

}

}

public List<Item> GetOrderedComputers()

{

string sqlQuery =

"select * from Items " +

"where Id in " +

"(select Item_Id from OrderItems)";

return GetItemsFromQuery(sqlQuery);

}

public void RepairComputer(int ItemId, int OrderId)

{

string query =

"Delete from OrderItems " +

"where Order_Id = @orderId " +

"and Item_Id = @ItemId";

try

{

using (SqlConnection conn = new SqlConnection(connectionString))

{

conn.Open();

SqlCommand comm = new SqlCommand(query, conn);

SqlParameter idParam = new SqlParameter("@orderId",OrderId);

comm.Parameters.Add(idParam);

SqlParameter idItemParam = new SqlParameter("@ItemId", ItemId);

comm.Parameters.Add(idItemParam);

int num = comm.ExecuteNonQuery();

comm.Dispose();

if (conn != null)

conn.Close();

}

}

catch (Exception ex)

{

}

}

public List<ItemAndOrderId> GetOrderedComputersAndOrderId()

{

List<Item> items = GetOrderedComputers();

List<ItemAndOrderId> itemandOrderId = new List<ItemAndOrderId>();

List<OrderItem> OrderIdItemId = new List<OrderItem>();

string query =

"select * from OrderItems";

try

{

DataTable orderItemsDataTable = new DataTable();

using (SqlConnection connection = new SqlConnection(connectionString))

{

SqlCommand command = new SqlCommand(query, connection);

adapter = new SqlDataAdapter(command);

connection.Open();

adapter.Fill(orderItemsDataTable);

foreach (DataRow row in orderItemsDataTable.Rows)

{

var el = new OrderItem

{

OrderId = Convert.ToInt32(row["Order_Id"]),

ItemId = Convert.ToInt32(row["Item_Id"])

};

OrderIdItemId.Add(el);

}

connection.Close();

}

}

catch (Exception ex)

{

}

foreach(var el in OrderIdItemId)

{

foreach(var ordItem in items)

{

if(el.ItemId == ordItem.Id)

{

itemandOrderId.Add(new ItemAndOrderId

{

item= ordItem,

OrderId = el.OrderId

});

}

}

}

return itemandOrderId;

}

public ItemRepositoryADO()

{

try

{

connectionString = ConfigurationManager.ConnectionStrings["MvvmAppDb"].ConnectionString;

}

catch (Exception ex)

{

error = ex.Message.ToString();

}

}

#region

//private void ExecuteQuery(string sqlQuery)

//{

// using (SqlConnection conn = new SqlConnection(connectionString))

// {

// conn.Open();

// SqlCommand comm = new SqlCommand(sqlQuery, conn);

// int num = comm.ExecuteNonQuery();

// comm.Dispose();

// if (conn != null)

// conn.Close();

// if(itemsTable!=null)

// itemsTable.Clear();

// }

//}

#endregion

public void Create(Item item)

{

//ExecuteQuery(sqlQuery);

string sqlQueryParametrized =

"Insert into Items (Title,ImagePath,Price,Company)" +

"Values (@Title,@ImagePath,@Price,@Company)";

using (SqlConnection conn = new SqlConnection(connectionString))

{

conn.Open();

SqlCommand comm = new SqlCommand(sqlQueryParametrized, conn);

SqlParameter titleParam = new SqlParameter("@Title", item.Title);

comm.Parameters.Add(titleParam);

SqlParameter ImagePathParam = new SqlParameter("@ImagePath", item.ImagePath);

comm.Parameters.Add(ImagePathParam);

SqlParameter PriceParam = new SqlParameter("@Price", item.Price);

comm.Parameters.Add(PriceParam);

SqlParameter CompanyParam = new SqlParameter("@Company", item.Company);

comm.Parameters.Add(CompanyParam);

int num = comm.ExecuteNonQuery();

comm.Dispose();

if (conn != null)

conn.Close();

}

}

public void Delete(int id)

{

string sqlQuery =

"Delete from Items " +

"Where id = @Id";

using (SqlConnection conn = new SqlConnection(connectionString))

{

conn.Open();

SqlCommand comm = new SqlCommand(sqlQuery, conn);

SqlParameter idParam = new SqlParameter("@Id",id);

comm.Parameters.Add(idParam);

int num = comm.ExecuteNonQuery();

comm.Dispose();

if (conn != null)

conn.Close();

}

}

private List<Item> GetItemsFromQuery(string sql)

{

var result = new List<Item>();

try

{

itemsTable = new DataTable();

SqlConnection connection = new SqlConnection(connectionString);

SqlCommand command = new SqlCommand(sql, connection);

adapter = new SqlDataAdapter(command);

connection.Open();

adapter.Fill(itemsTable);

foreach (DataRow row in itemsTable.Rows)

{

var el = new Item

{

Company = row["Company"].ToString(),

ImagePath = row["ImagePath"].ToString(),

Title = row["Title"].ToString(),

Price = Convert.ToInt32(row["Price"]),

Id = Convert.ToInt32(row["Id"])

};

result.Add(el);

}

if (connection != null)

connection.Close();

if (itemsTable != null)

itemsTable.Clear();

}

catch (Exception ex)

{

}

return result;

}

public IEnumerable<Item> GetAllItems()

{

string sql = "Select * from Items";

return GetItemsFromQuery(sql);

}

public async Task<IEnumerable<Item>> GetAllItemsAsync()

{

string sql = "Select * from Items";

itemsTable = new DataTable();

using (SqlConnection connection = new SqlConnection(connectionString))

{

SqlCommand command = new SqlCommand(sql, connection);

adapter = new SqlDataAdapter(command);

await connection.OpenAsync();

adapter.Fill(itemsTable);

var result = new List<Item>();

foreach (DataRow row in itemsTable.Rows)

{

var el = new Item

{

Company = row["Company"].ToString(),

ImagePath = row["ImagePath"].ToString(),

Title = row["Title"].ToString(),

Price = Convert.ToInt32(row["Price"]),

Id = Convert.ToInt32(row["Id"])

};

result.Add(el);

}

if (connection != null)

connection.Close();

return result;

}

}

public Item GetItem(int id)

{

string sql = "Select * from Items " +

"where id = @Id";

var res = new Item();

itemsTable = new DataTable();

try

{

using (SqlConnection connection = new SqlConnection(connectionString))

{

SqlCommand command = new SqlCommand(sql, connection);

SqlParameter idParam = new SqlParameter("@Id", id);

command.Parameters.Add(idParam);

adapter = new SqlDataAdapter(command);

connection.Open();

adapter.Fill(itemsTable);

foreach (DataRow row in itemsTable.Rows)

{

var el = new Item

{

Company = row["Company"].ToString(),

ImagePath = row["ImagePath"].ToString(),

Title = row["Title"].ToString(),

Price = Convert.ToInt32(row["Price"]),

Id = Convert.ToInt32(row["Id"])

};

res = el;

}

connection.Close();

if (itemsTable != null)

itemsTable.Clear();

}

}

catch (Exception ex)

{

}

return res;

}

public void Save()

{

//string query = "Begin Transaction commit";

//ExecuteQuery(query);

}

public void Update(Item item)

{

string sqlQueryParam =

"Update Items " +

"Set " +

"Title = @Title," +

"ImagePath = @ImagePath," +

"Price = @Price," +

"Company = @Company " +

"Where Id = @Id";

using (SqlConnection conn = new SqlConnection(connectionString))

{

conn.Open();

SqlCommand comm = new SqlCommand(sqlQueryParam, conn);

SqlParameter param = new SqlParameter("@Title", SqlDbType.NVarChar, -1);

param.Value = item.Title;

comm.Parameters.Add(param);

SqlParameter ImagePathParam = new SqlParameter("@ImagePath", SqlDbType.NVarChar, -1);

ImagePathParam.Value = item.ImagePath;

comm.Parameters.Add(ImagePathParam);

SqlParameter PriceParam = new SqlParameter("@Price",SqlDbType.Int);

PriceParam.Value = item.Price;

comm.Parameters.Add(PriceParam);

SqlParameter CompanyParam = new SqlParameter("@Company", SqlDbType.NVarChar, -1);

CompanyParam.Value = item.Company;

comm.Parameters.Add(CompanyParam);

SqlParameter idParam = new SqlParameter("@Id", SqlDbType.Int);

idParam.Value = item.Id;

comm.Parameters.Add(idParam);

try

{

int num = comm.ExecuteNonQuery();

}

catch(Exception ex)

{

}

comm.Dispose();

if (conn != null)

conn.Close();

}

}

public void SendToServer<T>(T elem)

{

ClientTcpAction client = new ClientTcpAction();

client.SendData(elem);

}

}

Лістинг А.3 – Клас «ApplicationViewModel» (файл ApplicationViewModel.cs)

public class ApplicationViewModel: INotifyPropertyChanged

{

public ObservableCollection<ItemModel> Computers{ get; set; }

public ObservableCollection<ItemModel> OrderedComputers { get; set; }

private RelayCommand addComputerCommand;

public RelayCommand AddComputerCommand

{

get

{

if (addComputerCommand != null)

return addComputerCommand;

else

return (addComputerCommand = new RelayCommand(ob =>

{

StackPanel result = ob as StackPanel;

try

{

ItemModel computer = new ItemModel()

{

Title = result.Children.OfType<TextBox>().FirstOrDefault(n => n.Name == "TitleTxt").Text.ToString(),

Company = result.Children.OfType<TextBox>().FirstOrDefault(n => n.Name == "CompanyTxt").Text.ToString(),

ImagePath = result.Children.OfType<TextBox>().FirstOrDefault(n => n.Name == "ImageTxt").Text.ToString(),

Price = Convert.ToInt32(result.Children.OfType<TextBox>().FirstOrDefault(n => n.Name == "PriceTxt").Text.ToString())

};

//Item item = new Item();

Computers.Insert(0, computer);

SelectedComputer = computer;

}catch(Exception ex)

{

}

}));

}

}

private RelayCommand addComputerToDatabaseCommand;

public RelayCommand AddComputerToDatabaseCommand

{

get

{

if (addComputerToDatabaseCommand != null)

return addComputerToDatabaseCommand;

else

return (addComputerToDatabaseCommand = new RelayCommand(ob =>

{

ItemModel el = ob as ItemModel;

//Mapper.Initialize(config => config.CreateMap<ItemModel, Item>());

var mapperConf = new MapperConfiguration(config => config.CreateMap<ItemModel, Item>());

var mapper = mapperConf.CreateMapper();

Item item = mapper.Map<ItemModel, Item>(el);

if (ob != null)

{

try

{

try

{

serviceAdo.Items.Create(item);

}

catch (Exception ex)

{

}

try

{

service.Items.Create(item);

}

catch (Exception ex)

{

}

client.ItemAdded(item.ToString());

}

catch (Exception ex)

{

}

}

}));

}

}

private RelayCommand deleteComputerCommand;

public RelayCommand DeleteComputerCommand

{

get

{

if (deleteComputerCommand != null)

return deleteComputerCommand;

else

return (deleteComputerCommand = new RelayCommand(ob =>

{

ItemModel item = ob as ItemModel;

if (ob != null)

{

Computers.Remove(item);

try

{

try

{

serviceAdo.Items.Delete(item.Id);

}

catch (Exception ex)

{

}

try

{

service.Items.Delete(item.Id);

}

catch (Exception ex)

{

}

client.ItemDeleted(item.Id);

}

catch (Exception ex)

{

}

//service.Items.Delete(item.Id);

}

},

(ob)=>Computers.Count>0

));

}

}

private RelayCommand saveComputerCommand;

public RelayCommand SaveComputerCommand

{

get

{

if (saveComputerCommand != null)

return saveComputerCommand;

else

return (saveComputerCommand = new RelayCommand(ob =>

{

try

{

service.Items.Save();

}

catch (Exception ex)

{

}

}));

}

}

private RelayCommand updateComputerCommand;

public RelayCommand UpdateComputerCommand

{

get

{

if (updateComputerCommand != null)

return updateComputerCommand;

else

return (updateComputerCommand = new RelayCommand(ob =>

{

ItemModel el = ob as ItemModel;

var mapperConf = new MapperConfiguration(config => config.CreateMap<ItemModel, Item>());

var mapper = mapperConf.CreateMapper();

Item item = mapper.Map<ItemModel, Item>(el);

if (ob != null)

{

try

{

try

{

serviceAdo.Items.Update(item);

}

catch (Exception ex)

{

}

try

{

service.Items.Update(item);

}

catch (Exception ex )

{

}

client.ItemUpdated(item.Id, item.Title);

}catch(Exception ex)

{

}

//service.Items.Update(item);

}

},

(ob) => Computers.Count > 0

));

}

}

private RelayCommand moveToOrderList;

public RelayCommand MoveToOrderList

{

get

{

if (moveToOrderList != null)

return moveToOrderList;

else

return (moveToOrderList = new RelayCommand(ob =>

{

ItemModel item = ob as ItemModel;

if (ob != null)

{

OrderedComputers.Add(item);

}

},

(ob) => Computers.Count > 0

));

}

}

private ItemModel selectedComputer;

public ItemModel SelectedComputer

{

get

{

return selectedComputer;

}

set

{

selectedComputer = value;

OnPropertyRaised("SelectedComputer");

}

}

private ServiceModule service;

private ServiceModuleAdo serviceAdo;

ItemServiceClient client;

public ApplicationViewModel()

{

service = new ServiceModule("mvvmApp.Dal.Abstract.Entities.ApplicationContext");

serviceAdo = new ServiceModuleAdo();

List<Item> computersIEnum = serviceAdo.Items.GetAllItems().ToList();//service.Items.GetAllItems().ToList();//client.GetAllItems().ToList(); //

try

{

client = new ItemServiceClient();

if (client != null)

{

string ItemData = "";

foreach (var item in computersIEnum)

{

ItemData += item.ToString() + "\n";

}

client.ItemsFromDatabase(ItemData);

}

}

catch (Exception ex)

{

}

//Mapper.Initialize(config => config.CreateMap<Item, ItemModel>());

var mapperConf = new MapperConfiguration(conf => conf.CreateMap<Item, ItemModel>());

var mapper = mapperConf.CreateMapper();

Computers = new ObservableCollection<ItemModel>

(mapper.Map<List<Item>, ObservableCollection<ItemModel>>(computersIEnum));

//serviceAdo = new ServiceModuleAdo();

//var computersIEnum = serviceAdo.Items.GetAllItems().ToList();

//var orders = serviceAdo.Orders.GetAllItems();

//Computers = serviceAdo.Computers;

}

public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyRaised(string propertyname)

{

if (PropertyChanged != null)

{

PropertyChanged(this, new PropertyChangedEventArgs(propertyname));

}

}

}

ДОДАТОК Б (ДІАГРАМА КЛАСІВ)

ДОДАТОК В (ДІАГРАМА Use Case)