コード例 #1
0
        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());
        }
コード例 #2
0
        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");
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        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());
        }