Escali License control 1
CustomerViewModel.cs
Gå til dokumentasjonen til denne filen.
1using System.Runtime.InteropServices;
2using AutoMapper;
9using Microsoft.EntityFrameworkCore;
10
12{
14 {
15
18
19 public List<CustomerClientModel>? Customers { get; private set; }
20
21 public CustomerViewModel(DataContext context, IMapper mapper, AlertService alertService)
22 {
24 _mapper = mapper;
25 _alertService = alertService;
26 }
27
28 public async Task GetCustomers()
29 {
30 var customers = await _customerService.GetAllCustomers();
31 UpdateCustomers(_mapper.Map<List<CustomerClientModel>>(customers));
32 }
33
34 public async Task<CustomerClientModel?> GetCustomerById(int id)
35 {
36 var customer = await _customerService.GetCustomerById(id);
37 return customer != null ? _mapper.Map<CustomerClientModel>(customer) : null;
38 }
39
40 public async Task<CustomerClientModel> AddCustomer(CustomerClientModel customer)
41 {
42 try
43 {
44 var mappedCustomer = _mapper.Map<Customer>(customer);
45 var res = await _customerService.AddCustomer(mappedCustomer);
46 _alertService.UpdateInfoMessage(new InfoMessage("Kunde ble lagt til!", InfoMessageType.SUCCESS));
47
48 var updatedCustomers = Customers ?? new();
49 updatedCustomers.Add(_mapper.Map<CustomerClientModel>(res));
50
51 UpdateCustomers(updatedCustomers);
52
53 return _mapper.Map<CustomerClientModel>(res);
54 }
55 catch (DbUpdateException e)
56 {
57 _alertService.UpdateInfoMessage(new InfoMessage("Det oppstod en feil i database.", InfoMessageType.ERROR));
58 return null;
59 }
60 catch (InvalidOperationException e)
61 {
63 Logger.Error(e.StackTrace);
64 return null;
65 }
66 }
67
68 public async Task<CustomerClientModel?> UpdateCustomer(CustomerClientModel customer)
69 {
70 var mappedCustomer = _mapper.Map<Customer>(customer);
71
72 try
73 {
74 var res = await _customerService.UpdateCustomer(mappedCustomer);
75 _alertService.UpdateInfoMessage(new InfoMessage("Kunde ble oppdatert!", InfoMessageType.SUCCESS));
76
77 var updatedCustomers = Customers!.Select(c => c.CustomerSeq != res.CustomerSeq ? c : _mapper.Map<CustomerClientModel>(res)).ToList();
78 UpdateCustomers(updatedCustomers);
79
80 return _mapper.Map<CustomerClientModel>(res);
81 }
82 catch (DbUpdateException e)
83 {
84 _alertService.UpdateInfoMessage(new InfoMessage("Det oppstod en feil i database.", InfoMessageType.ERROR));
85 return null;
86 }
87 catch (InvalidOperationException e)
88 {
90 return null;
91 }
92 }
93
94 private void UpdateCustomers(List<CustomerClientModel> customers)
95 {
96 Customers = customers;
98 }
99
100 }
101}
InfoMessageType
var context
Definition: Program.cs:49
async void UpdateInfoMessage(InfoMessage msg)
Definition: AlertService.cs:12
CustomerViewModel(DataContext context, IMapper mapper, AlertService alertService)
async Task< CustomerClientModel?> UpdateCustomer(CustomerClientModel customer)
async Task< CustomerClientModel > AddCustomer(CustomerClientModel customer)
void UpdateCustomers(List< CustomerClientModel > customers)
async Task< CustomerClientModel?> GetCustomerById(int id)
CustomerService class inserts and updates Customer in the Database
async Task< Customer > AddCustomer(Customer customer)
Adds a Customer to the database
async Task< List< Customer > > GetAllCustomers(int? id=null)
Read all Customers from database
async Task< Customer > GetCustomerById(int id)
Read one Customer with id from database
async Task< Customer > UpdateCustomer(Customer customer)
Updates changes on a Customer in the database
Definition: Logger.cs:4
static void Error(string msg)
Definition: Logger.cs:11