public async Task <IActionResult> AdminSetting([FromForm] AdminSettingUpdateModel model)
        {
            var response = await _adminSettingService.UpdateAdminSetting(model);

            var data = new AdminSettingUpdateModel
            {
                ContestName        = response.ContestName,
                Id                 = response.Id,
                Username           = response.Username,
                TestCaseLimitation = response.TestCaseLimitation,
                SystemEmail        = response.SystemEmail
            };

            return(View(data));
        }
        public async Task <IActionResult> AdminSetting()
        {
            var response = await _adminSettingService.GetAdminSetting();

            var data = new AdminSettingUpdateModel
            {
                ContestName        = response.ContestName,
                Id                 = response.Id,
                Username           = response.Username,
                TestCaseLimitation = response.TestCaseLimitation,
                SystemEmail        = response.SystemEmail,
                Unlimited          = response.TestCaseLimitation == null ? true : false
            };

            return(View(data));
        }
Exemple #3
0
        public async Task <AdminSettingModel> UpdateAdminSetting(AdminSettingUpdateModel model)
        {
            var response = await _adminSettingBusiness.UpdateAdminSetting(model);

            return(response);
        }
        public async Task <AdminSettingModel> UpdateAdminSetting(AdminSettingUpdateModel model)
        {
            var adminInfo = await _adminSettingCacheBusiness.GetFullInfo();

            var entityToUpdate = new AdminSettingEntity
            {
                Id                        = adminInfo.Id,
                TestCaseLimit             = adminInfo.TestCaseLimitation,
                ContestName               = adminInfo.ContestName,
                SpojUserNameEncode        = DataSecurityUltils.Encrypt(adminInfo.Username, ApplicationConfigs.SpojKey.ForUserName),
                SpojPasswordEncode        = DataSecurityUltils.Encrypt(adminInfo.Password, ApplicationConfigs.SpojKey.ForPassword),
                SystemEmail               = adminInfo.SystemEmail,
                SystemEmailPasswordEncode = DataSecurityUltils.Encrypt(adminInfo.EmailPassword, ApplicationConfigs.SpojKey.ForPassword)
            };


            // If update spoj account
            if (model.IsUpdateAccount)
            {
                if (model.IsNewAccount)
                {
                    if (model.NewPassword != model.ConfirmPassword)
                    {
                        throw new SpojDebugException("New password and confirmed password not match");
                    }
                }
                else
                {
                    if (model.OldPassword != adminInfo.Password)
                    {
                        throw new SpojDebugException("Wrong password");
                    }

                    if (model.NewPassword != model.ConfirmPassword)
                    {
                        throw new SpojDebugException("New password and confirmed password not match");
                    }
                }


                entityToUpdate.SpojUserNameEncode = DataSecurityUltils.Encrypt(model.Username, ApplicationConfigs.SpojKey.ForUserName);
                entityToUpdate.SpojPasswordEncode = DataSecurityUltils.Encrypt(model.NewPassword, ApplicationConfigs.SpojKey.ForPassword);
            }


            if (model.IsUpdateEmail)
            {
                if (model.IsNewEmail)
                {
                    if (model.NewEmailPassword != model.ConfirmEmailPassword)
                    {
                        throw new SpojDebugException("New email password and confirmed email password not match");
                    }
                }
                else
                {
                    if (model.OldEmailPassword != adminInfo.EmailPassword)
                    {
                        throw new SpojDebugException("Wrong email password");
                    }

                    if (model.NewEmailPassword != model.ConfirmEmailPassword)
                    {
                        throw new SpojDebugException("Email new password and confirmed password not match");
                    }
                }

                entityToUpdate.SystemEmail = model.SystemEmail;
                entityToUpdate.SystemEmailPasswordEncode = DataSecurityUltils.Encrypt(model.NewEmailPassword, ApplicationConfigs.SpojKey.ForPassword);
            }

            if (model.IsUpdateConfig)
            {
                entityToUpdate.ContestName = model.ContestName;

                if (model.Unlimited)
                {
                    entityToUpdate.TestCaseLimit = null;
                }
                else
                {
                    entityToUpdate.TestCaseLimit = model.TestCaseLimitation;
                }
            }


            Repository.Update(entityToUpdate,
                              x => x.SpojUserNameEncode,
                              x => x.SpojPasswordEncode,
                              x => x.SystemEmail,
                              x => x.SystemEmailPasswordEncode,
                              x => x.TestCaseLimit,
                              x => x.ContestName);

            Repository.SaveChanges();

            _adminSettingCacheBusiness.RemoveCache();

            return(await _adminSettingCacheBusiness.GetCache());
        }