public TitleAvailabilityView(TitleAvailability titleAvailability, PlatformView platform) { Id = titleAvailability.Id.ToString(); Country = titleAvailability.Country.ToString(); Link = titleAvailability.Link; Platform = platform; }
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}}"); }