Beispiel #1
0
        public LibUserTO Update(LibUserTO entity)
        {
            if (entity is null)
            {
                throw new ArgumentNullException(nameof(entity));
            }
            if (entity.Id <= 0)
            {
                throw new ArgumentException("LibUser To Update Invalid Id");
            }
            if (!libraryContext.LibraryUsers.Any(x => x.Id == entity.Id))
            {
                throw new KeyNotFoundException($"Update(LibUser) Can't find LibUser to update.");
            }

            var editedEntity = libraryContext.LibraryUsers.FirstOrDefault(e => e.Id == entity.Id);

            if (editedEntity != default)
            {
                editedEntity.UpdateFromDetached(entity.ToEF());
            }
            var tracking = libraryContext.LibraryUsers.Update(editedEntity);

            tracking.State = EntityState.Modified;
            libraryContext.SaveChanges();

            //return editedEntity.ToTransferObject();
            return(tracking.Entity.ToTransferObject());

            //return editedEntity.ToTransferObject();
        }
Beispiel #2
0
        public void AddLibUser_AddExistingSheetPart_DoNotInsertTwiceInDb()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <LibraryContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new LibraryContext(options);
            ILibUserRepository libUserRepository = new LibUserRepository(context);

            //Act
            var libUser = new LibUserTO {
                IdentityUserId = 23, InstrumentIds = new List <int> {
                    1
                }
            };
            var libUser2 = new LibUserTO {
                Id = 2, IdentityUserId = 23, InstrumentIds = new List <int> {
                    1
                }
            };
            var addedLibUser  = libUserRepository.Add(libUser);
            var addedLibUser2 = libUserRepository.Add(libUser2);

            context.SaveChanges();

            //Assert
            Assert.AreEqual(1, libUserRepository.GetAll().Count());
        }
Beispiel #3
0
        public void AddLibUser_Successful()
        {
            var options = new DbContextOptionsBuilder <LibraryContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new LibraryContext(options);
            ILibUserRepository libUserRepository = new LibUserRepository(context);

            //Act
            var libUser = new LibUserTO {
                IdentityUserId = 23, InstrumentIds = new List <int> {
                    1
                }
            };
            var result   = libUserRepository.Add(libUser);
            var libUser2 = new LibUserTO {
                IdentityUserId = 2, InstrumentIds = new List <int> {
                    1
                }
            };
            var result2 = libUserRepository.Add(libUser2);

            context.SaveChanges();

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.InstrumentIds.First(), 1);
            Assert.AreEqual(result.IdentityUserId, 23);
        }
Beispiel #4
0
        public void ToEF_Successful()
        {
            //ARRANGE
            var instrument = new InstrumentTO {
                Id = 4, Name = "Saxophone"
            };
            var libUser = new LibUserTO {
                Id = 1, IdentityUserId = 24
            };
            var category = new CategoryTO {
                Id = 2, Name = "Jazz"
            };
            var sheet = new SheetTO {
                Id = 3, Name = "Sam's Dixie", Category = category, IsCurrent = true, IsIndependance = true, IsGarde = false,
            };
            var sheetPart = new SheetPartTO {
                Id = 2, Instrument = instrument, Sheet = sheet, Path = "Path"
            };
            //ACT
            var instrumentEF = instrument.ToEF();
            var libUserEF    = libUser.ToEF();
            var categoryEF   = category.ToEF();
            var sheetEF      = sheet.ToEF();
            var sheetPartEF  = sheetPart.ToEF();

            //Assert
            Assert.AreEqual(instrument.Name, instrumentEF.Name);
            Assert.AreEqual(libUser.IdentityUserId, libUserEF.IdentityUserId);
            Assert.AreEqual(category.Name, categoryEF.Name);
            Assert.AreEqual(sheet.Name, sheetEF.Name);
            Assert.AreEqual(sheetPart.Sheet.Name, sheetPartEF.Sheet.Name);
        }
Beispiel #5
0
        public void UpdateLibUser_Successful()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <LibraryContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new LibraryContext(options);
            ILibUserRepository libUserRepository = new LibUserRepository(context);

            var libUser = new LibUserTO {
                IdentityUserId = 23, InstrumentIds = new List <int> {
                    1
                }
            };
            var libUser2 = new LibUserTO {
                IdentityUserId = 4, InstrumentIds = new List <int> {
                    7, 4
                }
            };
            var libUser3 = new LibUserTO {
                IdentityUserId = 6, InstrumentIds = new List <int> {
                    2
                }
            };
            var addedLibUser  = libUserRepository.Add(libUser);
            var addedLibUser2 = libUserRepository.Add(libUser2);
            var addedLibUser3 = libUserRepository.Add(libUser3);

            context.SaveChanges();

            //Act
            var result = new List <int> {
                4, 2
            };

            addedLibUser.InstrumentIds = new List <int> {
                4, 2
            };
            var test = libUserRepository.Update(addedLibUser);

            context.SaveChanges();

            //Assert
            Assert.AreEqual(3, libUserRepository.GetAll().Count());
            CollectionAssert.AreEqual(new List <int> {
                4, 2
            }, test.InstrumentIds);
        }
Beispiel #6
0
        public void ToTEF_ProvidingNull_ThrowException()
        {
            InstrumentTO instrument = null;
            LibUserTO    libUser    = null;
            CategoryTO   category   = null;
            SheetTO      sheet      = null;
            SheetPartTO  sheetPart  = null;

            //ACT
            Assert.ThrowsException <ArgumentNullException>(() => instrument.ToEF());
            Assert.ThrowsException <ArgumentNullException>(() => libUser.ToEF());
            Assert.ThrowsException <ArgumentNullException>(() => category.ToEF());
            Assert.ThrowsException <ArgumentNullException>(() => sheet.ToEF());
            Assert.ThrowsException <ArgumentNullException>(() => sheetPart.ToEF());
        }
Beispiel #7
0
        public bool Delete(LibUserTO entity)
        {
            if (entity is null)
            {
                throw new KeyNotFoundException();
            }
            if (entity.Id <= 0)
            {
                throw new ArgumentException("LibUser To Delete Invalid Id");
            }

            var libUser = libraryContext.LibraryUsers.FirstOrDefault(x => x.Id == entity.Id);

            libraryContext.LibraryUsers.Remove(libUser);
            libraryContext.SaveChanges();
            return(true);
        }
Beispiel #8
0
        public LibUserTO Add(LibUserTO entity)
        {
            if (entity is null)
            {
                throw new ArgumentNullException();
            }
            if (entity.Id != 0)
            {
                return(entity);
            }

            var entityEF = entity.ToEF();
            var result   = libraryContext.LibraryUsers.Add(entityEF);

            libraryContext.SaveChanges();

            return(result.Entity.ToTransferObject());
        }
Beispiel #9
0
        public void DeleteLibUser_ProvidingNull_ThrowException()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <LibraryContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new LibraryContext(options);
            ILibUserRepository libUserRepository = new LibUserRepository(context);

            var libUser = new LibUserTO {
                IdentityUserId = 23, InstrumentIds = new List <int> {
                    1
                }
            };

            //Act & Assert
            Assert.ThrowsException <ArgumentException>(() => libUserRepository.Delete(libUser));
        }
Beispiel #10
0
        public void GetLibUsertById_Successful()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <LibraryContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new LibraryContext(options);
            ILibUserRepository libUserRepository = new LibUserRepository(context);

            var libUser = new LibUserTO {
                IdentityUserId = 23, InstrumentIds = new List <int> {
                    1
                }
            };
            var libUser2 = new LibUserTO {
                IdentityUserId = 4, InstrumentIds = new List <int> {
                    7, 4
                }
            };
            var libUser3 = new LibUserTO {
                IdentityUserId = 6, InstrumentIds = new List <int> {
                    2
                }
            };
            var addedLibUser  = libUserRepository.Add(libUser);
            var addedLibUser2 = libUserRepository.Add(libUser2);
            var addedLibUser3 = libUserRepository.Add(libUser3);

            context.SaveChanges();

            //Act
            var result  = libUserRepository.GetById(1);
            var result2 = libUserRepository.GetById(2);
            var result3 = libUserRepository.GetById(3);

            //Assert
            Assert.AreEqual(23, result.IdentityUserId);
            Assert.AreEqual(4, result2.IdentityUserId);
            Assert.AreEqual(6, result3.IdentityUserId);
        }
Beispiel #11
0
        public static LibUserEF ToEF(this LibUserTO LibUser)
        {
            if (LibUser is null)
            {
                throw new ArgumentNullException(nameof(LibUser));
            }

            var libUserEF = new LibUserEF
            {
                Id             = LibUser.Id,
                IdentityUserId = LibUser.IdentityUserId,
            };

            libUserEF.UserInstruments = LibUser.InstrumentIds?.Select(x => new UserInstruEF
            {
                LibUserId    = libUserEF.Id,
                InstrumentId = x,
            }).ToList();

            return(libUserEF);
        }
Beispiel #12
0
        public List <LibUserTO> MockLibUsers()
        {
            var libUser = new LibUserTO {
                Id = 1, IdentityUserId = 23, InstrumentIds = new List <int> {
                    1
                }
            };
            var libUser2 = new LibUserTO {
                Id = 2, IdentityUserId = 4, InstrumentIds = new List <int> {
                    2, 3
                }
            };
            var libUser3 = new LibUserTO {
                Id = 3, IdentityUserId = 6, InstrumentIds = new List <int> {
                    2
                }
            };

            return(new List <LibUserTO> {
                libUser, libUser2, libUser3
            });
        }
Beispiel #13
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();

            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName       = Input.Email,
                    Email          = Input.Email,
                    FirstName      = Input.FirstName,
                    LastName       = Input.LastName,
                    IsIndependance = Input.IsIndependance,
                    IsGarde        = Input.IsGarde,
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    // Add the right role to that user:
                    //await _userManager.AddToRoleAsync(user, Input.SelectedRole);
                    await _userManager.AddToRoleAsync(user, "Musician");

                    // Creating LibUser when IdentityUser is created
                    var instruments    = Instruments.Where(x => x.IsSelected == true).ToList();
                    var instrumentsIds = instruments.Select(x => x.Id).ToList();
                    var libUser        = new LibUserTO {
                        IdentityUserId = user.Id, InstrumentIds = instrumentsIds
                    };
                    var done = _libraryUnitOfWork.LibUserRepository.Add(libUser);

                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl }));
                    }
                    else
                    {
                        await _userManager.AddClaimAsync(user, new Claim("FirstName", user.FirstName));

                        await _userManager.AddClaimAsync(user, new Claim("LastName", user.LastName));

                        await _signInManager.SignInAsync(user, isPersistent : false);

                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }