public TitleAvailabilityView(TitleAvailability titleAvailability, PlatformView platform)
 {
     Id       = titleAvailability.Id.ToString();
     Country  = titleAvailability.Country.ToString();
     Link     = titleAvailability.Link;
     Platform = platform;
 }
Esempio n. 2
0
        public static async Task AddAvailability(HttpContext httpContext, AddAvailability addAvailability)
        {
            if (!httpContext.Session.GetAccountId(out long accountId))
            {
                throw new HttpException(500, "Failed to get AccountId");
            }

            await using var context = new DatabaseContext();
            var account = await(from a in context.Accounts where a.Id.Equals(accountId) select a).FirstOrDefaultAsync();

            if (account == null)
            {
                throw new HttpException(500, "Account does not exist");
            }

            if (account.AccountType != AccountType.Admin)
            {
                throw new HttpException(403, "Access denied");
            }

            var title = await(from a in context.Titles where a.IMDbId.Equals(addAvailability.ImdbId) select a).FirstOrDefaultAsync();

            if (title == null)
            {
                await httpContext.Response.SendRequestErrorAsync(404, "Title not found");

                return;
            }

            var platform = await(from p in context.Platforms where p.Id.Equals(addAvailability.PlatformId) select p).FirstOrDefaultAsync();

            if (platform == null)
            {
                await httpContext.Response.SendRequestErrorAsync(404, "Platform not found");

                return;
            }

            var availability = new TitleAvailability {
                Id         = Security.IdGen.GetId(),
                TitleId    = title.Id,
                PlatformId = platform.Id,
                Link       = addAvailability.Link,
                Country    = addAvailability.CountryData
            };

            await context.TitleAvailabilities.AddAsync(availability);

            await context.SaveChangesAsync();

            await httpContext.Response.WriteAsync($"{{\"success\":true}}");
        }