public Model.Litters Litter(int id, long userid)
        {
            var litter = context.Litters.Find(id);

            if (litter == null)
            {
                // Use local time instead of server time to ensure we have the right day
                var timezone = System.TimeZoneInfo.CreateCustomTimeZone("NZST", new System.TimeSpan(12, 00, 00), "NZST", "NZST");
                var today    = System.TimeZoneInfo.ConvertTimeToUtc(System.DateTime.Now);
                today = System.TimeZoneInfo.ConvertTimeFromUtc(today, timezone).Date;

                litter = new Model.Litters
                {
                    UserId      = userid,
                    Animal      = "cat",
                    WeeksToWean = 0,
                    BornOn      = today,
                    Listed      = today
                };
            }
            litter.User = context.Users.Find(litter.UserId);
            if (litter.User != null)
            {
                litter.User.Litters     = null;
                litter.User.Token       = null;
                litter.User.BankAccount = null;
            }
            litter.Animals = context.Animals.Where(a => a.LitterId == id).ToList();
            foreach (Model.Animals a in litter.Animals)
            {
                a.Litter = null;
            }
            return(litter);
        }
        public int SaveLitter()
        {
            string json = new StreamReader(Request.Body).ReadToEnd();

            Model.Litters litter = JsonConvert.DeserializeObject <Model.Litters>(json);

            var record = context.Litters.Find(litter.Id);

            if (record == null)
            {
                record = new Model.Litters();
                context.Litters.Add(record);
                record.UserId = litter.UserId;
                record.Listed = litter.Listed;
            }
            else
            {
                if (litter.PictureUrl != record.PictureUrl)
                {
                    DeleteImage(record.PictureUrl);
                }
            }

            var token = this.Request.Headers["Authorization"][0].Replace("Bearer ", "");

            Model.Users bearer = context.Users.FirstOrDefault(u => u.Token == token);
            if (bearer == null || bearer.Id != record.UserId)
            {
                return(0);                                              // security check
            }
            record.BornOn       = litter.BornOn;
            record.WeeksToWean  = litter.WeeksToWean;
            record.Price        = litter.Price;
            record.Deposit      = litter.Deposit;
            record.Animal       = litter.Animal;
            record.Breed        = litter.Breed;
            record.PictureUrl   = litter.PictureUrl;
            record.Description  = litter.Description;
            record.IsIndividual = litter.IsIndividual;
            context.SaveChanges();

            foreach (Model.Animals animal in litter.Animals)
            {
                animal.LitterId = record.Id;
                SaveAnimalToDb(animal);
            }

            return(record.Id);
        }