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);
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
            }
        }