source: FarmatikoData/FarmatikoRepo/Repository.cs@ e0cdea2

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

Fix all bugs

  • Property mode set to 100644
File size: 12.9 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 {
[6f203af]272 var PHead = await _context.PharmacyHeads.Where(x => x.Id == Id).FirstOrDefaultAsync();
[e0cdea2]273 var user = await _context.Users.Where(x => x.Email.Equals(PHead.Email)).FirstOrDefaultAsync();
274 _context.PharmacyHeads.Remove(PHead);
275 _context.Users.Remove(user);
276 _context.SaveChanges();
[1454207]277 }
278
[d23bf72]279 public IDictionary<string, User> GetUsers()
280 {
281 var users = _context.Users.ToDictionary(x => x.Email, x => new User
282 {
283 Id = x.Id,
284 Name = x.Name,
285 Email = x.Email,
286 Password = x.Password,
287 UserRole = x.UserRole
288 });
[db484c9]289
[d23bf72]290 return users;
291 }
[1db5673]292
293 public User GetRole(string userName)
294 {
295 var user = _context.Users.Where(x => x.Email.Equals(userName)).FirstOrDefault();
296 return user;
297 }
298
299 public ICollection<Medicine> GetMedicines()
300 {
301 var Medicines = _context.Medicines.Select(x => new Medicine
302 {
303 Id = x.Id,
304 Name = x.Name,
305 Strength = x.Strength,
306 Form = x.Form,
307 WayOfIssuing = x.WayOfIssuing,
308 Manufacturer = x.Manufacturer,
309 Price = x.Price,
310 Packaging = x.Packaging,
[db484c9]311 Medicines = x.Medicines
[1db5673]312
313 }).ToList();
[68454c6]314 return Medicines;
[1db5673]315 }
316
317 public ICollection<PharmacyHeadMedicine> GetPHMedicines(string email)
318 {
319 var head = _context.PharmacyHeads.Where(x => x.Email.Equals(email)).FirstOrDefault();
[db484c9]320 var phmeds = _context.PharmacyHeadMedicines.Where(x => x.PheadId == head.Id).Include(x => x.Medicine).ToList();
[1db5673]321 return phmeds;
322 }
[e0cdea2]323
324 /*public async Task<bool> AddUser(User user)
[8e74e2f]325 {
[7d80751]326 if (user.Id == 0)
327 {
[0a694bb]328 var users = await _context.Users.Select(x => new User
329 {
330 Name = x.Name,
331 Email = x.Email,
332 Password = x.Password,
333 UserRole = x.UserRole
334 }).ToListAsync();
335 var usr = users.Where(x => x.Email.Equals(user.Email)).ToList();
[e0cdea2]336 if (usr != null && usr.Count() > 0)
[0a694bb]337 {
338 return true;
339 }
340 else
[7d80751]341 {
342 await _context.Users.AddAsync(user);
343 await _context.SaveChangesAsync();
[0a694bb]344 return true;
[7d80751]345 }
346 }
[0a694bb]347 return false;
[e0cdea2]348 }*/
[afefe75]349
350 public async Task<List<PharmacyHeadMedicine>> GetAllPHMedicines()
351 {
[0a694bb]352 var list = await _context.PharmacyHeadMedicines.Select(x => new PharmacyHeadMedicine
353 {
354 PheadId = x.PheadId,
355 Head = x.Head,
356 MedicineId = x.MedicineId,
357 Medicine = x.Medicine
358 }
359 ).ToListAsync();
[afefe75]360 return list;
361 }
[e0cdea2]362
363 public ICollection<PharmacyHeadMedicine> GetPHMedicines()
364 {
365 var meds = _context.PharmacyHeadMedicines.Select(x => new PharmacyHeadMedicine
366 {
367 PheadId = x.PheadId,
368 Head = x.Head,
369 MedicineId = x.MedicineId,
370 Medicine = x.Medicine
371 }).ToList();
372 return meds;
373 }
[5d02859]374 }
375}
Note: See TracBrowser for help on using the repository browser.