source: FarmatikoData/FarmatikoRepo/Repository.cs@ 472dd7e

Last change on this file since 472dd7e was f554983, checked in by Dimitar Slezenkovski <dslezenkovski@…>, 3 years ago

Add cron job for updating data, with Quartz.NET

  • Property mode set to 100644
File size: 13.2 KB
RevLine 
[5d02859]1using FarmatikoData.FarmatikoRepoInterfaces;
2using FarmatikoData.Models;
[6f203af]3using Microsoft.EntityFrameworkCore;
4using System;
5using System.Collections.Generic;
[5d02859]6using System.Linq;
7using System.Threading.Tasks;
8
9namespace FarmatikoData.FarmatikoRepo
10{
11 public class Repository : IRepository
12 {
13 private readonly FarmatikoDataContext _context;
14 public Repository(FarmatikoDataContext context)
15 {
16 _context = context;
17 }
18 //GET
[6f203af]19 public async Task<IEnumerable<HealthcareWorker>> GetAllWorkers()
[5d02859]20 {
[e0cdea2]21 var Workers = await _context.HealthcareWorkers.Select(x => new HealthcareWorker
22 {
23 Id = x.Id,
24 Name = x.Name,
25 Branch = x.Branch,
26 Facility = x.Facility,
27 Title = x.Title
28 }).Take(5).ToListAsync();
[5d02859]29 return Workers;
30 }
31
[6f203af]32 public async Task<IEnumerable<HealthFacility>> GetFacilities()
[5d02859]33 {
[d23bf72]34 var Facilities = await _context.HealthFacilities.Take(5).ToListAsync();
[5d02859]35 return Facilities;
36 }
37
[1454207]38 public async Task<HealthFacility> GetFacility(int Id)
[5d02859]39 {
40 var Facility = await _context.HealthFacilities.FindAsync(Id);
41 return Facility;
42 }
43
44 public async Task<Medicine> GetMedicine(int Id)
45 {
46 var Medicine = await _context.Medicines.FindAsync(Id);
47 return Medicine;
48 }
49
[1db5673]50 public async Task<IEnumerable<Medicine>> GetMedicinesAsync()
[5d02859]51 {
[1db5673]52 var Medicines = await _context.Medicines.Select(x => new Medicine
53 {
[8e74e2f]54 Id = x.Id,
[1db5673]55 Name = x.Name,
56 Strength = x.Strength,
57 Form = x.Form,
58 WayOfIssuing = x.WayOfIssuing,
59 Manufacturer = x.Manufacturer,
60 Price = x.Price,
61 Packaging = x.Packaging
62
[e0cdea2]63 }).Take(5).ToListAsync();
[5d02859]64 return Medicines;
65 }
66
67 public async Task<Pandemic> GetPandemic()
68 {
[d23bf72]69 var Pandemic = await _context.Pandemics.FirstOrDefaultAsync();
[5d02859]70 return Pandemic;
71 }
[afefe75]72 public async Task<List<Pharmacy>> GetPharmacies()
[5d02859]73 {
[afefe75]74 var Pharmacies = await _context.Pharmacies.Select(x => new Pharmacy
75 {
76 Name = x.Name,
77 Location = x.Location,
78 Address = x.Address,
79 WorkAllTime = x.WorkAllTime,
[0a694bb]80 PheadId = x.PheadId,
81 PharmacyHead = x.PharmacyHead
[afefe75]82 }).Take(5).ToListAsync();
[5d02859]83 return Pharmacies;
84 }
85
86 public async Task<Pharmacy> GetPharmacy(int id)
87 {
88 var Pharmacy = await _context.Pharmacies.FindAsync(id);
89 return Pharmacy;
90 }
91
[1454207]92 public async Task<HealthcareWorker> GetWorker(int id)
[5d02859]93 {
94 var Worker = await _context.HealthcareWorkers.FindAsync(id);
95 return Worker;
96 }
97
[6f203af]98 public async Task<IEnumerable<HealthFacility>> SearchFacilities(string query)
[5d02859]99 {
[d23bf72]100 var SearchQuery = await _context.HealthFacilities
[e0cdea2]101 .Where(x => x.Name.ToLower().Contains(query.ToLower())
102 || x.Municipality.ToLower().Contains(query.ToLower())
103 || x.Type.ToLower().Contains(query.ToLower())).Take(5)
[db484c9]104 .OrderBy(x => x.Name).ToListAsync();
[5d02859]105
106 return SearchQuery;
107 }
108
[6f203af]109 public async Task<IEnumerable<Medicine>> SearchMedicines(string query)
[5d02859]110 {
[d23bf72]111 var SearchQuery = await _context.Medicines
[e0cdea2]112 .Where(x => x.Name.ToLower().Contains(query.ToLower())
113 || x.Form.ToLower().Contains(query.ToLower())
114 || x.Strength.ToLower().Contains(query.ToLower())
115 || x.Packaging.ToLower().Contains(query.ToLower())).Take(20)
[db484c9]116 .OrderBy(x => x.Name).ToListAsync();
[5d02859]117
118 return SearchQuery;
119 }
120
[6f203af]121 public async Task<IEnumerable<Pharmacy>> SearchPharmacies(string query)
[5d02859]122 {
[afefe75]123 var SearchQuery = await _context.Pharmacies
[e0cdea2]124 .Where(x => x.Name.ToLower().Contains(query.ToLower())
125 || x.PharmacyHead.Name.ToLower().Contains(query.ToLower())).Take(5)
[db484c9]126 .OrderBy(x => x.Name).ToListAsync();
[5d02859]127
128 return SearchQuery;
129 }
130
[6f203af]131 public async Task<IEnumerable<HealthcareWorker>> SearchWorkers(string query)
[5d02859]132 {
[e0cdea2]133 var SearchQuery = await _context.HealthcareWorkers.Include(x => x.Facility)
134 .Where(x => x.Name.ToLower().Contains(query.ToLower())
135 || x.Facility.Name.ToLower().Contains(query.ToLower())).Take(20)
[db484c9]136 .OrderBy(x => x.Name).ToListAsync();
[5d02859]137
138 return SearchQuery;
139 }
[d23bf72]140 public HealthFacility GetFacilityJSON(string healthFacility)
[1454207]141 {
[d23bf72]142 var Facility = _context.HealthFacilities.Where(x => x.Name.Equals(healthFacility)).FirstOrDefault();
[1454207]143 return Facility;
144 }
[5d02859]145
146 //POST
147
[1454207]148 public async Task AddWorker(HealthcareWorker Worker)
[5d02859]149 {
[d23bf72]150 await _context.HealthcareWorkers.AddAsync(Worker);
151 _context.SaveChanges();
[5d02859]152 }
153
[1454207]154 public async Task AddFacility(HealthFacility healthFacility)
[5d02859]155 {
[d23bf72]156 await _context.HealthFacilities.AddAsync(healthFacility);
157 _context.SaveChanges();
[5d02859]158 }
159
160 public async Task AddPharmacy(Pharmacy pharmacy)
161 {
[e0cdea2]162 pharmacy.Id = 0;
163 if (pharmacy.Id == 0)
164 {
165 var phars = _context.Pharmacies.Select(x => new Pharmacy
166 {
167 Name = x.Name,
168 Location = x.Location,
169 Address = x.Address
170 }).ToList();
171 var pharms = phars.Where(x => x.Name.Equals(pharmacy.Name) && x.Location.Equals(pharmacy.Location) && x.Address.Equals(pharmacy.Address)).ToList();
172 if (pharms is null || pharms.Count() == 0)
173 {
174 await _context.Pharmacies.AddAsync(pharmacy);
175 _context.SaveChanges();
176 }
177
178 }
[5d02859]179 }
180
181 public async Task AddPharmacyHead(PharmacyHead pharmacyHead)
182 {
[7d80751]183 pharmacyHead.Id = 0;
184 if (pharmacyHead.Id == 0)
185 {
[0a694bb]186 var pheads = await _context.PharmacyHeads.Select(x => new PharmacyHead
187 {
188 Name = x.Name,
189 Email = x.Email
190 }).ToListAsync();
191 var pheadusr = pheads.Where(x => x.Email.Equals(pharmacyHead.Email)).ToList();
192 if (pheadusr == null || pheadusr.Count() == 0)
[7d80751]193 {
194 await _context.PharmacyHeads.AddAsync(pharmacyHead);
195 await _context.SaveChangesAsync();
196 }
197 }
[5d02859]198 }
199
200 public async Task AddMedicines(Medicine medicine)
201 {
[d23bf72]202 await _context.Medicines.AddAsync(medicine);
203 _context.SaveChanges();
[5d02859]204 }
205
206 public async Task AddPandemic(Pandemic pandemic)
207 {
[d23bf72]208 var pand = await _context.Pandemics.AddAsync(pandemic);
209 _context.SaveChanges();
[5d02859]210 }
[1454207]211
212 public async Task UpdateFacility(HealthFacility healthFacility)
213 {
[d23bf72]214 var Facility = await _context.HealthFacilities.Where(x => x.Id == healthFacility.Id).FirstOrDefaultAsync();
[1454207]215 Facility.Address = healthFacility.Address;
216 Facility.Email = healthFacility.Email;
217 Facility.Municipality = healthFacility.Municipality;
218 Facility.Name = healthFacility.Name;
219 Facility.Phone = healthFacility.Phone;
220 Facility.Type = healthFacility.Type;
[db484c9]221 await _context.SaveChangesAsync();
[1454207]222 }
223
224 public async Task RemoveMedicine(Medicine medicine)
225 {
[db484c9]226 _context.Medicines.Remove(medicine);
227 await _context.SaveChangesAsync();
[1454207]228 }
229
230 public async Task UpdatePandemic(Pandemic pandemic)
231 {
[d23bf72]232 var Pandemic = await _context.Pandemics.Where(x => x.Id == pandemic.Id).FirstOrDefaultAsync();
[1454207]233 Pandemic.ActiveGlobal = pandemic.ActiveGlobal;
234 Pandemic.ActiveMK = pandemic.ActiveMK;
235 Pandemic.DeathsGlobal = pandemic.DeathsGlobal;
236 Pandemic.DeathsMK = pandemic.DeathsMK;
237 Pandemic.Name = pandemic.Name;
238 Pandemic.NewMK = pandemic.NewMK;
239 Pandemic.TotalGlobal = pandemic.TotalGlobal;
240 Pandemic.TotalMK = pandemic.TotalMK;
[db484c9]241 await _context.SaveChangesAsync();
[1454207]242 }
243
244 public async Task RemovePharmacy(Pharmacy pharmacy)
245 {
[db484c9]246 _context.Pharmacies.Remove(pharmacy);
247 await _context.SaveChangesAsync();
[1454207]248 }
[6f203af]249 //not impl
[1454207]250 public Task UpdateWorker(HealthcareWorker worker)
251 {
252 throw new System.NotImplementedException();
253 }
254
255 public async Task UpadatePharmacy(Pharmacy pharmacy)
256 {
[d23bf72]257 var Pharmacy = await _context.Pharmacies.Where(x => x.Id == pharmacy.Id).FirstOrDefaultAsync();
[1454207]258 Pharmacy.Name = pharmacy.Name;
259 Pharmacy.Location = pharmacy.Location;
260 Pharmacy.WorkAllTime = pharmacy.WorkAllTime;
261 Pharmacy.Address = pharmacy.Address;
[db484c9]262 await _context.SaveChangesAsync();
[1454207]263 }
[db484c9]264 //not implemented, not needed
[1454207]265 public Task UpdateMedicine(Medicine medicine)
266 {
[1db5673]267 throw new NotImplementedException();
[1454207]268 }
269
[6f203af]270 public async Task RemovePharmacyHead(int Id)
[1454207]271 {
[8eb1e21]272 var PHead = await _context.PharmacyHeads.Where(x => x.Id == Id).Include(x => x.Pharmacies).Include(x => x.Medicines).FirstOrDefaultAsync();
[e0cdea2]273 var user = await _context.Users.Where(x => x.Email.Equals(PHead.Email)).FirstOrDefaultAsync();
[8eb1e21]274 var PHreqs = await _context.PHRequests.Where(x => x.Head.Id.Equals(PHead.Id)).FirstOrDefaultAsync();
275 PHead.Pharmacies.Select(x => x.PheadId = null);
[f554983]276 PHead.Pharmacies.Select(x => x.PharmacyHead = null);
[8eb1e21]277 _context.PHRequests.Remove(PHreqs);
[e0cdea2]278 _context.PharmacyHeads.Remove(PHead);
279 _context.Users.Remove(user);
280 _context.SaveChanges();
[1454207]281 }
282
[d23bf72]283 public IDictionary<string, User> GetUsers()
284 {
285 var users = _context.Users.ToDictionary(x => x.Email, x => new User
286 {
287 Id = x.Id,
288 Name = x.Name,
289 Email = x.Email,
290 Password = x.Password,
291 UserRole = x.UserRole
292 });
[db484c9]293
[d23bf72]294 return users;
295 }
[1db5673]296
297 public User GetRole(string userName)
298 {
299 var user = _context.Users.Where(x => x.Email.Equals(userName)).FirstOrDefault();
300 return user;
301 }
302
303 public ICollection<Medicine> GetMedicines()
304 {
305 var Medicines = _context.Medicines.Select(x => new Medicine
306 {
307 Id = x.Id,
308 Name = x.Name,
309 Strength = x.Strength,
310 Form = x.Form,
311 WayOfIssuing = x.WayOfIssuing,
312 Manufacturer = x.Manufacturer,
313 Price = x.Price,
314 Packaging = x.Packaging,
[db484c9]315 Medicines = x.Medicines
[1db5673]316
317 }).ToList();
[68454c6]318 return Medicines;
[1db5673]319 }
320
321 public ICollection<PharmacyHeadMedicine> GetPHMedicines(string email)
322 {
323 var head = _context.PharmacyHeads.Where(x => x.Email.Equals(email)).FirstOrDefault();
[db484c9]324 var phmeds = _context.PharmacyHeadMedicines.Where(x => x.PheadId == head.Id).Include(x => x.Medicine).ToList();
[1db5673]325 return phmeds;
326 }
[e0cdea2]327
328 /*public async Task<bool> AddUser(User user)
[8e74e2f]329 {
[7d80751]330 if (user.Id == 0)
331 {
[0a694bb]332 var users = await _context.Users.Select(x => new User
333 {
334 Name = x.Name,
335 Email = x.Email,
336 Password = x.Password,
337 UserRole = x.UserRole
338 }).ToListAsync();
339 var usr = users.Where(x => x.Email.Equals(user.Email)).ToList();
[e0cdea2]340 if (usr != null && usr.Count() > 0)
[0a694bb]341 {
342 return true;
343 }
344 else
[7d80751]345 {
346 await _context.Users.AddAsync(user);
347 await _context.SaveChangesAsync();
[0a694bb]348 return true;
[7d80751]349 }
350 }
[0a694bb]351 return false;
[e0cdea2]352 }*/
[afefe75]353
354 public async Task<List<PharmacyHeadMedicine>> GetAllPHMedicines()
355 {
[0a694bb]356 var list = await _context.PharmacyHeadMedicines.Select(x => new PharmacyHeadMedicine
357 {
358 PheadId = x.PheadId,
359 Head = x.Head,
360 MedicineId = x.MedicineId,
361 Medicine = x.Medicine
362 }
363 ).ToListAsync();
[afefe75]364 return list;
365 }
[e0cdea2]366
367 public ICollection<PharmacyHeadMedicine> GetPHMedicines()
368 {
369 var meds = _context.PharmacyHeadMedicines.Select(x => new PharmacyHeadMedicine
370 {
371 PheadId = x.PheadId,
372 Head = x.Head,
373 MedicineId = x.MedicineId,
374 Medicine = x.Medicine
375 }).ToList();
376 return meds;
377 }
[5d02859]378 }
379}
Note: See TracBrowser for help on using the repository browser.