public async Task <ActionResult <Models.Chronicle> > UpdateChronicle(Models.Chronicle chronicle) { //TODO move this header code to separate service - AuthenticationService var re = Request; var headers = re.Headers; string token = ""; if (headers.ContainsKey("apikey")) { token = headers["apikey"]; var user = chronicleContext.Users.Where(k => k.Key == token).FirstOrDefault(); if (user == null) { return(NotFound("No user with such key")); } //check if chronicle belongs to the user with such key if (chronicle.UserId != user.Id) { return(BadRequest("Chronicle doesn't belong to user with given key")); } chronicleContext.Update(chronicle); await chronicleContext.SaveChangesAsync(); return(Ok()); } return(BadRequest()); }
public async Task <ActionResult <string> > CreateChronicle(Models.Chronicle chronicle) { var re = Request; var headers = re.Headers; string token = ""; if (headers.ContainsKey("apikey")) { token = headers["apikey"]; var user = chronicleContext.Users.Where(k => k.Key == token).FirstOrDefault(); if (user != null) { var chro = new Models.Chronicle { Name = chronicle.Name, CreatedTime = DateTime.Now, UserId = user.Id, IsPrivate = chronicle.IsPrivate }; chronicleContext.Chronicles.Add(chro); await chronicleContext.SaveChangesAsync(); return("Added"); } } return("Something went wrong"); }
public async Task <ActionResult <Models.Chronicle> > GetMyChronicle(long id) { var re = Request; var headers = re.Headers; string token = ""; if (headers.ContainsKey("apikey")) { token = headers["apikey"]; var user = chronicleContext.Users.Where(k => k.Key == token).FirstOrDefault(); if (user == null) { return(NotFound()); } var chro = chronicleContext.Chronicles.Where(c => c.Id == id && c.UserId == user.Id && c.TimeDeleted == null).FirstOrDefault(); if (chro != null) { Models.Chronicle chronicle = new Models.Chronicle { Id = chro.Id, Name = chro.Name, CreatedTime = chro.CreatedTime, UserId = chro.UserId }; return(chronicle); } if (isFamilies(id, user.Id)) { var chronicleFromFamily = chronicleContext.Chronicles.Where(c => c.Id == id && c.TimeDeleted == null).FirstOrDefault(); { Models.Chronicle chronicle = new Models.Chronicle { Id = chronicleFromFamily.Id, Name = chronicleFromFamily.Name, CreatedTime = chronicleFromFamily.CreatedTime, UserId = chronicleFromFamily.UserId }; return(chronicle); } } } return(NotFound()); }
public async Task <ActionResult <Models.Chronicle> > DeleteChronicle(Models.Chronicle chronicle) { //TODO move this header code to separate service - AuthenticationService var re = Request; var headers = re.Headers; string token = ""; if (headers.ContainsKey("apikey")) { token = headers["apikey"]; var user = chronicleContext.Users.Where(k => k.Key == token).FirstOrDefault(); if (user != null) { if (user.Id != chronicle.UserId) { return(BadRequest("User is not the author")); } chronicle.TimeDeleted = DateTime.Now; chronicleContext.Chronicles.Update(chronicle); await chronicleContext.SaveChangesAsync(); var posts = chronicleContext.Posts.Where(p => p.ChronicleId == chronicle.Id).ToList(); foreach (var post in posts) { post.TimeDeleted = DateTime.Now; chronicleContext.Update(post); await chronicleContext.SaveChangesAsync(); } return(Ok()); } } return(BadRequest()); }