public async Task <ActionResult> Post(string email, string password) { using var db = new DutyingContext(); if (!db.Users.Any(user => user.Email == email)) { return(NotFound("No user found!")); } var user = db.Users .Include(user => user.UserRoles) .ThenInclude(userRole => userRole.Role) .Where(user => user.Email == email) .First(); var salt = Convert.FromBase64String(user.Salt); var hashedPassword = RegisterController.HashPasswordPbkdf2(password, salt); if (user.Password != hashedPassword) { return(BadRequest("Wrong password!")); } var token = await CreateTokenAsync(user); return(Ok(token)); }
public ActionResult <Ward> Post([FromBody] Ward ward) { using var db = new DutyingContext(); var hospital = db.Hospitals .Include(hospital => hospital.Wards) .FirstOrDefault(hospital => hospital.Id == ward.HospitalId); if (hospital is null) { return(NotFound()); } if (hospital.Wards is null) { hospital.Wards = new List <Ward>(); } hospital.Wards.Add(ward); db.Hospitals.Update(hospital); db.SaveChanges(); return(Created("", ward)); }
public ActionResult <IEnumerable <Hospital> > Get([FromRoute] string searchPhrase, [FromHeader(Name = "Paging-PageNo")] int pageNo, [FromHeader(Name = "Paging-PageSize")] int pageSize) { int skipRecords = (pageNo - 1) * pageSize; using var db = new DutyingContext(); var query = db.Hospitals.AsQueryable(); if (!string.IsNullOrEmpty(searchPhrase)) { query = query.Where(hospital => hospital.Name.ToLower().Contains(searchPhrase.ToLower())); } int totalRecords = query.Count(); int pageCount = totalRecords > 0 ? (int)Math.Ceiling(totalRecords / (double)pageSize) : 0; var hospitals = query.OrderBy(hospital => hospital.Name) .Skip(skipRecords) .Take(pageSize) .ToList(); pageNo = Math.Min(pageCount, pageNo); Response.Headers.Add("Paging-PageNo", pageNo.ToString()); Response.Headers.Add("Paging-PageSize", pageSize.ToString()); Response.Headers.Add("Paging-PageCount", pageCount.ToString()); Response.Headers.Add("Paging-TotalRecordsCount", totalRecords.ToString()); return(Ok(hospitals)); }
public ActionResult Put([FromBody] SchedulerEvent schedulerEvent) { using var db = new DutyingContext(); var user = db.Users .Include(user => user.SchedulerEvents) .FirstOrDefault(user => user.Id == schedulerEvent.UserId); if (user is null) { NotFound(); } user.SchedulerEvents .Where(e => e.Id == schedulerEvent.Id) .Select(e => { e.StartsAt = e.StartsAt != schedulerEvent.StartsAt ? schedulerEvent.StartsAt : e.StartsAt; e.EndsAt = e.EndsAt != schedulerEvent.EndsAt ? schedulerEvent.EndsAt : e.EndsAt; e.Comment = e.Comment != schedulerEvent.Comment ? schedulerEvent.Comment : e.Comment; return(e); }).ToList(); db.Users.Update(user); db.SaveChanges(); return(Ok()); }
public ActionResult <Hospital> Post(string street, string zip, string city, string district, string name) { using var db = new DutyingContext(); var hospital = new Hospital() { Street = street, Zip = zip, City = city, District = district, Name = name, }; try { db.Add(hospital); db.SaveChanges(); } catch (Exception ex) { return(Problem( title: "Database communication error!", statusCode: StatusCodes.Status500InternalServerError, detail: ex.Message)); } return(Created("Hospital created", hospital)); }
public ActionResult <SchedulerEvent> Post([FromBody] SchedulerEvent schedulerEvent) { using var db = new DutyingContext(); var user = db.Users .Include(user => user.SchedulerEvents) .FirstOrDefault(user => user.Id == schedulerEvent.UserId); if (user is null) { NotFound(); } if (user.SchedulerEvents is null) { user.SchedulerEvents = new List <SchedulerEvent>(); } user.SchedulerEvents.Add(schedulerEvent); db.Users.Update(user); db.SaveChanges(); return(Created("", schedulerEvent)); }
public ActionResult <IEnumerable <User> > Get() { using var db = new DutyingContext(); var hospitals = db.Hospitals.ToList(); return(Ok(hospitals)); }
public ActionResult <IEnumerable <Role> > Get() { using var db = new DutyingContext(); var dbRoles = db.Roles .ToList(); return(Ok(dbRoles)); }
public ActionResult <IEnumerable <SchedulerEvent> > Get() { using var db = new DutyingContext(); var schedulerEvents = db.SchedulerEvents .ToList(); return(Ok(schedulerEvents)); }
public ActionResult <User> Post([FromBody] User user) { using var db = new DutyingContext(); if (db.Users.Any(u => u.Email == user.Email)) { return(Problem(title: "User with given email already exists!", statusCode: StatusCodes.Status409Conflict)); } var ward = db.Wards .Include(ward => ward.Users) .ThenInclude(users => user.UserRoles) .FirstOrDefault(ward => ward.Id == user.WardId); if (ward.Users is null) { ward.Users = new List <User>(); } var salt = GenerateSalt(); var hashedPassword = HashPasswordPbkdf2(user.Password, salt); user.Password = hashedPassword; user.Salt = Convert.ToBase64String(salt); user.CreatedAt = DateTime.Now; try { var role = db.Roles .Where(role => role.Symbol == (int)RoleEnum.Doctor) .First(); user.UserRoles = new List <UserRole>() { new UserRole() { Role = role } }; ward.Users.Add(user); db.Wards.Update(ward); db.SaveChanges(); } catch (Exception ex) { return(Problem( title: "Database communication error!", statusCode: StatusCodes.Status500InternalServerError, detail: ex.Message)); } return(Created("User created", user)); }
public ActionResult <User> Put([FromBody] User user) { using var db = new DutyingContext(); if (!db.Users.Any(u => u.Id == user.Id)) { return(NotFound()); } var dbUser = db.Users .Include(user => user.UserRoles) .ThenInclude(uRoles => uRoles.Role) .FirstOrDefault(u => u.Id == user.Id); if (dbUser.FirstName != user.FirstName) { dbUser.FirstName = user.FirstName; } if (dbUser.LastName != user.LastName) { dbUser.LastName = user.LastName; } if (dbUser.Email != user.Email) { dbUser.Email = user.Email; } if (dbUser.WardId != user.WardId) { dbUser.WardId = user.WardId; } dbUser.UserRoles.RemoveAll(dbUr => !user.UserRoles.Any(ur => dbUr.RoleId == ur.RoleId)); user.UserRoles.RemoveAll(ur => dbUser.UserRoles.Any(dbUr => dbUr.RoleId == ur.RoleId)); if (user.UserRoles.Count > 0) { dbUser.UserRoles.AddRange(user.UserRoles); } if (!string.IsNullOrEmpty(user.Password) && dbUser.Password != RegisterController.HashPasswordPbkdf2(user.Password, Convert.FromBase64String(dbUser.Salt))) { var salt = RegisterController.GenerateSalt(); var hashedPassword = RegisterController.HashPasswordPbkdf2(user.Password, salt); dbUser.Password = hashedPassword; dbUser.Salt = Convert.ToBase64String(salt); } db.Users.Update(dbUser); db.SaveChanges(); return(Ok(dbUser)); }
public ActionResult <SchedulerEvent> GetByEventId([FromRoute] int eventId) { using var db = new DutyingContext(); var _event = db.SchedulerEvents .FirstOrDefault(e => e.Id == eventId); if (_event is null) { return(NotFound()); } return(Ok(_event)); }
public ActionResult <IEnumerable <Hospital> > Get([FromRoute] int hospitalId) { using var db = new DutyingContext(); var hospital = db.Hospitals .Where(hospital => hospital.Id == hospitalId) .FirstOrDefault(); if (hospital is null) { return(NotFound()); } return(Ok(hospital)); }
public ActionResult <Role> GetBySymbol([FromRoute] int roleSymbol) { using var db = new DutyingContext(); var role = db.Roles .Where(role => role.Symbol == roleSymbol) .FirstOrDefault(); if (role is null) { return(NotFound()); } return(Ok(role)); }
public ActionResult <Ward> GetByUserId([FromRoute] int userId) { using var db = new DutyingContext(); var ward = db.Wards .Where(ward => ward.Users.Any(user => user.Id == userId)) .FirstOrDefault(); if (ward is null) { return(NotFound()); } return(Ok(ward)); }
public ActionResult <Hospital> GetByWardId([FromRoute] int wardId) { using var db = new DutyingContext(); var hospitals = db.Hospitals .Include(hospital => hospital.Wards) .Where(hospital => hospital.Wards.Any(ward => ward.Id == wardId)) .ToList(); if (hospitals is null) { return(NotFound()); } return(Ok(hospitals)); }
public ActionResult <User> GetByWardId([FromRoute] int wardId) { using var db = new DutyingContext(); var users = db.Wards .Include(ward => ward.Users) .Where(ward => ward.Id == wardId) .Select(ward => ward.Users) .ToList(); if (users is null) { return(NotFound()); } return(Ok(users)); }
public ActionResult <IEnumerable <SchedulerEvent> > GetByUserId([FromRoute] int userId) { using var db = new DutyingContext(); var _events = db.Users .Include(user => user.SchedulerEvents) .Where(user => user.Id == userId) .Select(user => user.SchedulerEvents) .ToList(); if (_events is null) { return(NotFound()); } return(Ok(_events)); }
public ActionResult <User> Get([FromRoute] int userId) { using var db = new DutyingContext(); var user = db.Users .Where(user => user.Id == userId) .Include(user => user.UserRoles) .ThenInclude(userRole => userRole.Role) .FirstOrDefault(); if (user is null) { return(NotFound()); } return(Ok(user)); }
public ActionResult Delete([FromRoute] int eventId) { using var db = new DutyingContext(); var _event = db.SchedulerEvents .FirstOrDefault(e => e.Id == eventId); if (_event is null) { return(NotFound()); } db.SchedulerEvents.Remove(_event); db.SaveChanges(); return(Ok()); }
public ActionResult Delete([FromRoute] int userId) { using var db = new DutyingContext(); var user = db.Users .FirstOrDefault(user => user.Id == userId); if (user is null) { return(NotFound()); } db.Users.Remove(user); db.SaveChanges(); return(Ok()); }
public ActionResult Delete([FromRoute] int hospitalId) { using var db = new DutyingContext(); var hospital = db.Hospitals .FirstOrDefault(hospital => hospital.Id == hospitalId); if (hospital is null) { return(NotFound()); } db.Hospitals.Remove(hospital); db.SaveChanges(); return(Ok()); }
public ActionResult Delete([FromRoute] int wardId) { using var db = new DutyingContext(); var ward = db.Wards .FirstOrDefault(ward => ward.Id == wardId); if (ward is null) { return(NotFound()); } db.Wards.Remove(ward); db.SaveChanges(); return(Ok()); }
public ActionResult <IEnumerable <Ward> > Get([FromRoute] int hospitalId) { using var db = new DutyingContext(); var wards = db.Hospitals .Include(hospital => hospital.Wards) .Where(hospital => hospital.Id == hospitalId) .Select(hospital => hospital.Wards) .ToList(); if (wards is null) { return(NotFound()); } return(Ok(wards)); }
public ActionResult <Hospital> Put([FromBody] Hospital hospital) { using var db = new DutyingContext(); if (!db.Hospitals.Any(h => h.Id == hospital.Id)) { return(NotFound()); } var dbHospital = db.Hospitals .FirstOrDefault(h => h.Id == hospital.Id); if (dbHospital.Street != hospital.Street) { dbHospital.Street = hospital.Street; } if (dbHospital.Zip != hospital.Zip) { dbHospital.Zip = hospital.Zip; } if (dbHospital.City != hospital.City) { dbHospital.City = hospital.City; } if (dbHospital.District != hospital.District) { dbHospital.District = hospital.District; } if (dbHospital.Name != hospital.Name) { dbHospital.Name = hospital.Name; } db.Hospitals.Update(dbHospital); db.SaveChanges(); return(Ok(dbHospital)); }
public ActionResult <IEnumerable <User> > Get([FromRoute] string searchPhrase, [FromHeader(Name = "Paging-PageNo")] int pageNo, [FromHeader(Name = "Paging-PageSize")] int pageSize) { int skipRecords = (pageNo - 1) * pageSize; using var db = new DutyingContext(); var query = db.Users.AsQueryable(); if (!string.IsNullOrEmpty(searchPhrase)) { query = query.Where(user => user.Email.ToLower().Contains(searchPhrase.ToLower()) || user.FirstName.ToLower().Contains(searchPhrase.ToLower()) || user.LastName.ToLower().Contains(searchPhrase.ToLower())); } int totalRecords = query.Count(); int pageCount = totalRecords > 0 ? (int)Math.Ceiling(totalRecords / (double)pageSize) : 0; var users = query.OrderBy(user => user.LastName) .Skip(skipRecords) .Take(pageSize) .Include(user => user.UserRoles) .ThenInclude(userRole => userRole.Role) .ToList(); pageNo = Math.Min(pageCount, pageNo); Response.Headers.Add("Paging-PageNo", pageNo.ToString()); Response.Headers.Add("Paging-PageSize", pageSize.ToString()); Response.Headers.Add("Paging-PageCount", pageCount.ToString()); Response.Headers.Add("Paging-TotalRecordsCount", totalRecords.ToString()); return(Ok(users)); }