-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathGateSevices.cs
More file actions
128 lines (112 loc) · 4.45 KB
/
GateSevices.cs
File metadata and controls
128 lines (112 loc) · 4.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using Microsoft.Extensions.Logging;
using Shared.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using ViewModel;
using Infrastructure;
using Domain.Entities;
using Domain.IServices;
namespace Services
{
public class GateService : IGateService
{
private readonly IRepository<Gate> _gateRepository;
private readonly IRepository<Campus> _campusRepository;
private readonly ILogger<GateService> _logger;
public GateService(IRepository<Gate> gateRepository, IRepository<Campus> campusRepository, ILogger<GateService> logger)
{
_gateRepository = gateRepository;
_campusRepository = campusRepository;
_logger = logger;
}
public async Task<ServiceReturn<GateViewModel>> AddGate(GateViewModel gateViewModel)
{
var serviceReturn = new ServiceReturn<GateViewModel>();
try
{
var existingGate = (await _gateRepository.FindBy(g => g.gate_name == gateViewModel.GateName)).FirstOrDefault();
if (existingGate != null)
{
serviceReturn.AddError("Gate name is already registered.");
return serviceReturn;
}
var campusExists = (await _campusRepository.FindBy(c => c.CampusId == gateViewModel.CampusId)).FirstOrDefault();
if (campusExists == null)
{
serviceReturn.AddError("Campus not found.");
return serviceReturn;
}
var gate = new Gate
{
gate_name = gateViewModel.GateName,
CampusId = gateViewModel.CampusId
};
await _gateRepository.Insert(gate);
serviceReturn.Data = gateViewModel;
}
catch (Exception ex)
{
serviceReturn.AddError($"An error occurred while adding the gate: {ex.Message}");
_logger.LogError($"An error occurred while adding the gate: {ex.Message}");
}
return serviceReturn;
}
public async Task<ServiceReturn<GateViewModel>> GetGateById(int gateId)
{
var serviceReturn = new ServiceReturn<GateViewModel>();
try
{
var gate = (await _gateRepository.FindBy(g => g.GateId == gateId)).FirstOrDefault();
if (gate == null)
{
serviceReturn.AddError("Gate not found.");
return serviceReturn;
}
var campus = (await _campusRepository.FindBy(c => c.CampusId == gate.CampusId)).FirstOrDefault();
serviceReturn.Data = new GateViewModel
{
GateId = gate.GateId,
GateName = gate.gate_name,
CampusId = gate.CampusId,
};
}
catch (Exception ex)
{
serviceReturn.AddError($"An error occurred while retrieving the gate data: {ex.Message}");
_logger.LogError($"An error occurred while retrieving the gate data: {ex.Message}");
}
return serviceReturn;
}
public async Task<ServiceReturn<List<GateViewModel>>> GetGatesByCampusId(int campusId)
{
var serviceReturn = new ServiceReturn<List<GateViewModel>>();
try
{
var gates = await _gateRepository.FindBy(g => g.CampusId == campusId);
if (gates.Any())
{
serviceReturn.Data = gates.Select(g => new GateViewModel
{
GateId = g.GateId,
GateName = g.gate_name,
CampusId = g.CampusId
}).ToList();
serviceReturn.Count = gates.Count();
}
else
{
serviceReturn.Count = 0;
serviceReturn.AddError("No gates found for this campus.");
}
}
catch (Exception ex)
{
serviceReturn.AddError($"An error occurred while retrieving gate data: {ex.Message}");
_logger.LogError($"An error occurred while retrieving gate data: {ex.Message}");
}
return serviceReturn;
}
}
}