Escali License control 1
ModuleViewModel.cs
Gå til dokumentasjonen til denne filen.
1using AutoMapper;
8using Microsoft.EntityFrameworkCore;
9
11{
13 {
14
15 private readonly ModuleService _moduleService;
17
18 public List<ModuleClientModel>? Modules { get; private set; }
19 public ModuleViewModel(DataContext context, IMapper mapper, AlertService alertService)
20 {
22 _mapper = mapper;
23 _alertService = alertService;
24 }
25
26 public async Task GetModules()
27 {
28 var modules = await _moduleService.GetAllModules();
29 UpdateModules(_mapper.Map<List<ModuleClientModel>>(modules));
30 }
31
32 public async Task<ModuleClientModel?> CreateModule(ModuleClientModel moduleView)
33 {
34 var mapped = _mapper.Map<Module>(moduleView);
35 try
36 {
37 var res = await _moduleService.AddModule(mapped);
38 _alertService.UpdateInfoMessage(new InfoMessage("Ny modul lagt til!", InfoMessageType.SUCCESS));
39
40 var updatedModules = Modules ?? new List<ModuleClientModel>();
41 updatedModules.Add(_mapper.Map<ModuleClientModel>(res));
42
43 UpdateModules(updatedModules);
44 return _mapper.Map<ModuleClientModel>(res);
45 }
46 catch (DbUpdateException e)
47 {
48 _alertService.UpdateInfoMessage(new InfoMessage("Det oppstod en feil i database.", InfoMessageType.ERROR));
49 return null;
50 }
51 catch (InvalidOperationException e)
52 {
54 return null;
55 }
56 }
57
58 public async Task<ModuleClientModel>? UpdateModule(ModuleClientModel moduleView)
59 {
60 var mapped = _mapper.Map<Module>(moduleView);
61 try
62 {
63 var res = await _moduleService.UpdateModule(mapped);
64 _alertService.UpdateInfoMessage(new InfoMessage("Modul ble oppdatert!", InfoMessageType.SUCCESS));
65
66 var updatedModules = Modules!.Select(m => m.ModuleSeq != moduleView.ModuleSeq ? m : _mapper.Map<ModuleClientModel>(res)).ToList();
67 UpdateModules(updatedModules);
68 return _mapper.Map<ModuleClientModel>(res);
69 }
70 catch (DbUpdateException e)
71 {
72 Logger.Error(e.Message);
73 Console.WriteLine("Mapped modulelevelcount: " + mapped.ModuleLevels.Count);
74 Console.WriteLine("Mapped ModuleSeq: " + mapped.ModuleSeq);
75 _alertService.UpdateInfoMessage(new InfoMessage("Det oppstod en feil i database."
76 + "Tried to add ModuleLevel with modulelevelname : " + mapped.ModuleLevels.FindLast(u => u.ModuleSeq == mapped.ModuleSeq).ModuleLevelName
77 , InfoMessageType.ERROR));
78 return null;
79 }
80 catch (InvalidOperationException e)
81 {
82 Logger.Error(e.Message);
84 return null;
85 }
86 }
87
88 private void UpdateModules(List<ModuleClientModel> modules)
89 {
90 Modules = modules;
92 }
93
94 }
95}
InfoMessageType
var context
Definition: Program.cs:49
async void UpdateInfoMessage(InfoMessage msg)
Definition: AlertService.cs:12
void UpdateModules(List< ModuleClientModel > modules)
async? Task< ModuleClientModel > UpdateModule(ModuleClientModel moduleView)
async Task< ModuleClientModel?> CreateModule(ModuleClientModel moduleView)
ModuleViewModel(DataContext context, IMapper mapper, AlertService alertService)
ModuleService class inserts and updates Module in the Database
async Task< Module > UpdateModule(Module module)
Updates changes on a Module in the database
async Task< Module > AddModule(Module module)
Adds a Module to the database
async Task< List< Module > > GetAllModules()
Read all Modules from database
Definition: Logger.cs:4
static void Error(string msg)
Definition: Logger.cs:11