public IActionResult InitializeTapes() { // We do not initialize unless database is empty for safety reasons if (_tapeService.GetAllTapes().Count > 0) { return(BadRequest(new ExceptionModel { StatusCode = (int)HttpStatusCode.BadRequest, Message = "Tapes have already initialized in some form" })); } // Otherwise add tapes from initialization file using (StreamReader r = StreamReaderFactory.GetStreamReader("./Resources/tapes.json")) { string json = r.ReadToEnd(); dynamic tapesJSON = JsonConvert.DeserializeObject(json); foreach (var tapeJSON in tapesJSON) { // Generate input model from json tape TapeInputModel tape = SeedingUtils.ConvertJSONToTapeInputModel(tapeJSON); // Check if tape input model is valid if (!ModelState.IsValid) { IEnumerable <string> errorList = ModelState.Values.SelectMany(v => v.Errors).Select(x => x.ErrorMessage); throw new InputFormatException("Video tape in initialization file improperly formatted.", errorList); } // Create new tape if input model was valid Console.WriteLine($"adding tape {tapeJSON.id} of {tapesJSON.Count}"); _tapeService.CreateTape(tape); } } return(NoContent()); }
public IActionResult InitializeUsersAndBorrows() { // We do not initialize unless database is empty for safety reasons if (_userService.GetAllUsers().Count > 0) { return(BadRequest(new ExceptionModel { StatusCode = (int)HttpStatusCode.BadRequest, Message = "Users have already been initialized in some form" })); } // We do not initialize users unless tapes have been initialized due to borrow records if (_tapeService.GetAllTapes().Count == 0) { return(BadRequest(new ExceptionModel { StatusCode = (int)HttpStatusCode.BadRequest, Message = "Tapes need to be initialized before users. Call [POST] /tapes/initialize before." })); } // Otherwise add users from initialization file using (StreamReader r = StreamReaderFactory.GetStreamReader("../Resources/usersAndBorrows.json")) { string json = r.ReadToEnd(); dynamic usersJSON = JsonConvert.DeserializeObject(json); foreach (var userJSON in usersJSON) { // Generate input model from json for user UserInputModel user = SeedingUtils.ConvertJsonToUserInputModel(userJSON); // Check if tape input model is valid if (!ModelState.IsValid) { IEnumerable <string> errorList = ModelState.Values.SelectMany(v => v.Errors).Select(x => x.ErrorMessage); throw new InputFormatException("User in initialization file improperly formatted.", errorList); } // Create new user if input model was valid Console.WriteLine($"adding user and user records for user {userJSON.id} of {usersJSON.Count}"); int userId = _userService.CreateUser(user); SeedingUtils.CreateTapesForUser(userJSON, _tapeService); } } return(NoContent()); }