public async Task <OperationResult> UpdateMainPageInfo(List <BasicInfoItem> updatedList) { OperationResult result = new OperationResult(); try { foreach (var item in updatedList) { var info = await context.InfoItems.FirstOrDefaultAsync(i => i.Id == item.Id); info.Content = item.Content; info.Order = item.Order; info.Color = item.Color; } await context.SaveChangesAsync(); result.Result = true; result.Error = null; result.Content = "Informacje na stronie głównej zostały zaktualizowane"; return(result); } catch (Exception ex) { result.Result = false; result.Error = ex.ToString(); result.Content = null; return(result); } }
public async Task <OperationResult> ResetUserPassword(UserInfo info, string apiKey) { var checkUser = await context.Users.Where(u => u.AlbumNumber == info.AlbumNumber && u.Role == "Student").FirstOrDefaultAsync(); if (checkUser == null) { return(new OperationResult { Result = false, Error = "Brak studenta o podanym numerze albumu", Content = null }); } UserInfo user = await context.Users.Where(u => u.AlbumNumber == info.AlbumNumber && u.EmailAddress == info.EmailAddress && u.Role == "Student").FirstOrDefaultAsync(); if (user == null) { return(new OperationResult { Result = false, Error = "Adres email nie jest zgodny z numerem albumu studenta", Content = null }); } string newPassword = RandomPassword.GenerateTemporaryPassword(); using (SendGridSender sender = new SendGridSender(apiKey)) { var result = await sender.SendEmail_ResetUserPassword(user.EmailAddress, user.FirstName, user.LastName, newPassword); if (result.Result) { await IncreaseSendGridAccount(); user.Password = Cryptor.Encrypt(newPassword); await context.SaveChangesAsync(); } return(result); } }
public async Task <OperationResult> AddStudent(string albumNumber, string email, string firstName, string lastName, List <string> groups) { OperationResult result = new OperationResult(); string returnedPassword = RandomPassword.GenerateTemporaryPassword(); // Check proper data if (!ValidateStudentData(albumNumber.Trim(), email.Trim(), firstName.Trim(), lastName.Trim(), out string error)) { result.Result = false; result.Error = error; return(result); } // Check existing data var checkAlbum = await context.Users.Where(u => u.AlbumNumber == albumNumber.Trim()).FirstOrDefaultAsync(); if (checkAlbum != null) { result.Result = false; result.Error = "Podany numer albumu jest już zarejestrowany"; return(result); } var checkEmail = await context.Users.Where(u => u.EmailAddress == email.Trim()).FirstOrDefaultAsync(); if (checkEmail != null) { result.Result = false; result.Error = "Podany adres email jest już zarejestrowany"; return(result); } UserInfo user = new UserInfo { Id = Guid.NewGuid().ToString(), AlbumNumber = albumNumber.Trim(), Password = Cryptor.Encrypt(returnedPassword), EmailAddress = email.Trim(), FirstName = firstName.Trim(), LastName = lastName.Trim(), Role = "Student", IsRegistered = false, IsBlocked = false, DateCreated = DateTime.Now, DateBlocked = null, DateRegistered = null }; try { await context.Users.AddAsync(user); foreach (var item in groups) { if (!string.IsNullOrEmpty(item.Trim())) { await context.Relation_StudentGroup.AddAsync(new RelStudentGroup() { GroupId = item, StudentId = user.Id }); } } await context.SaveChangesAsync(); result.Result = true; result.Error = null; result.Content = returnedPassword; return(result); } catch (Exception ex) { result.Result = false; result.Error = ex.ToString(); return(result); } }