public void SetApplicationInternalData(Guid applicationId, int?internalScore, string internalDescription) { if (!BaseSecurity.IsSysAdmin(Context)) { throw new ChalkableSecurityException(); } if (internalScore.HasValue && (internalScore.Value < 0 || internalScore.Value > 100)) { throw new ChalkableException("Internal score out of range. Internal score should be in range [0,100]"); } using (var uow = Update()) { var da = new ApplicationDataAccess(uow); var app = da.GetApplicationById(applicationId); if (!app.IsLive) { throw new ChalkableException("Only live application can have internal data"); } app.InternalScore = internalScore; app.InternalDescription = internalDescription; da.Update(app); uow.Commit(); } }
public bool ApproveReject(Guid applicationId, bool isApprove) { if (!BaseSecurity.IsSysAdmin(Context) && !BaseSecurity.IsAppTester(Context) && !BaseSecurity.IsAssessmentAdmin(Context)) { throw new ChalkableSecurityException(); } Application application; using (var uow = Read()) { var da = new ApplicationDataAccess(uow); application = da.GetApplicationById(applicationId); } if (application.State == ApplicationStateEnum.SubmitForApprove) { User person = application.Developer.User; person.ConfirmationKey = Guid.NewGuid().ToString().Replace("-", ""); application.State = isApprove ? ApplicationStateEnum.Approved : ApplicationStateEnum.Rejected; using (var uow = Update()) { new UserDataAccess(uow).Update(person); var da = new ApplicationDataAccess(uow); da.Update(application); uow.Commit(); } ServiceLocator.EmailService.SendApplicationEmailToDeveloper(application); return(true); } return(false); }
public bool GoLive(Guid applicationId) { Application application; using (var uow = Update()) { var da = new ApplicationDataAccess(uow); application = da.GetApplicationById(applicationId); if (!ApplicationSecurity.CanEditApplication(Context, application)) { throw new ChalkableSecurityException(ChlkResources.ERR_APP_INVALID_RIGHTS); } if (application.State == ApplicationStateEnum.Approved) { var appInfo = BaseApplicationInfo.Create(application); Application orignApplication; if (application.OriginalRef.HasValue) { orignApplication = da.GetApplicationById(application.OriginalRef.Value); } else { orignApplication = new Application { SecretKey = application.SecretKey, Id = Guid.Empty }; application.CreateDateTime = DateTime.UtcNow; } orignApplication = EditApplication(orignApplication, appInfo, true, ApplicationStateEnum.Live); application.State = ApplicationStateEnum.Draft; if (!application.OriginalRef.HasValue) { application.OriginalRef = orignApplication.Id; } da.Update(application); uow.Commit(); return(true); } } return(false); }
public void ChangeApplicationType(Guid applicationId, bool isInternal) { if (!BaseSecurity.IsSysAdmin(Context)) { throw new ChalkableSecurityException(); } using (var uow = Update()) { var da = new ApplicationDataAccess(uow); var application = da.GetApplicationById(applicationId); if (!application.IsLive) { throw new ChalkableException("Only live application can be internal"); } application.IsInternal = isInternal; da.Update(application); uow.Commit(); } }
public bool UnList(Guid applicationId) { Application application; using (var uow = Read()) { var da = new ApplicationDataAccess(uow); application = da.GetApplicationById(applicationId); } if (!ApplicationSecurity.CanEditApplication(Context, application)) { throw new ChalkableSecurityException(ChlkResources.ERR_APP_INVALID_RIGHTS); } if (application.State == ApplicationStateEnum.Live) { DeleteApplication(application.Id); return(true); } return(false); }
public bool DeleteApplication(Guid id) { Application application; IList <Application> draftApps; using (var uow = Update()) { var da = new ApplicationDataAccess(uow); application = da.GetApplicationById(id); if (!ApplicationSecurity.CanEditApplication(Context, application)) { throw new ChalkableSecurityException(ChlkResources.ERR_APP_INVALID_RIGHTS); } if (application.OriginalRef.HasValue) { var orginalAppId = application.OriginalRef.Value; application.OriginalRef = null; da.Update(application); da.Delete(orginalAppId); } else { draftApps = da.GetAll(new AndQueryCondition { { nameof(Application.OriginalRef), id } }); foreach (var draftApp in draftApps) { draftApp.OriginalRef = null; da.Update(draftApp); } } da.Delete(id); uow.Commit(); } return(true); }
public Application UpdateDraft(Guid applicationId, BaseApplicationInfo appInfo) { Application application; using (var uow = Read()) { var da = new ApplicationDataAccess(uow); application = da.GetApplicationById(applicationId); } if (application.IsLive) { throw new ChalkableSecurityException("Only draft applications can be updated"); } if (string.IsNullOrEmpty(appInfo.ShortApplicationInfo.Name)) { throw new ChalkableException(ChlkResources.ERR_APP_NAME_MISSING); } if (string.IsNullOrEmpty(appInfo.ShortApplicationInfo.Url)) { throw new ChalkableException(ChlkResources.ERR_APP_URL_MISSING); } application = EditApplication(application, appInfo, true); return(application); }
public Application Submit(Guid applicationId, BaseApplicationInfo appInfo) { Application application; using (var uow = Read()) { var da = new ApplicationDataAccess(uow); application = da.GetApplicationById(applicationId); } var shortAppInfo = appInfo.ShortApplicationInfo; if (application.IsLive) { throw new ChalkableSecurityException("Only draft applications can't be submitted"); } if (string.IsNullOrEmpty(shortAppInfo.Name)) { throw new ChalkableException(ChlkResources.ERR_APP_NAME_MISSING); } if (string.IsNullOrEmpty(shortAppInfo.Url)) { throw new ChalkableException(ChlkResources.ERR_APP_URL_MISSING); } if (string.IsNullOrEmpty(shortAppInfo.ShortDescription)) { throw new ChalkableException(ChlkResources.ERR_APP_SHORT_DESCRIPTION_MISSING); } if (string.IsNullOrEmpty(shortAppInfo.Description)) { throw new ChalkableException(ChlkResources.ERR_APP_LONG_DESCRIPTION_MISSING); } if (appInfo.ApplicationAccessInfo.CanAttach) { if (!(shortAppInfo.BigPictureId.HasValue && shortAppInfo.SmallPictureId.HasValue)) { throw new ChalkableException(ChlkResources.ERR_APP_ICONS_MISSING); } } else { if (!(shortAppInfo.SmallPictureId.HasValue)) { throw new ChalkableException(ChlkResources.ERR_APP_SMALL_ICON_MISSING); } } if ((appInfo.ApplicationAccessInfo.HasStudentExternalAttach || appInfo.ApplicationAccessInfo.HasTeacherExternalAttach || appInfo.ApplicationAccessInfo.HasAdminExternalAttach) && !appInfo.ShortApplicationInfo.ExternalAttachPictureId.HasValue) { throw new ChalkableException(ChlkResources.ERR_APP_ATTACH_ICON_MISSING); } var developer = application.Developer; if (string.IsNullOrEmpty(developer.Name) || string.IsNullOrEmpty(developer.WebSite)) { throw new ChalkableException(ChlkResources.ERR_APP_DEV_INFO_MISSING); } application = EditApplication(application, appInfo, true, ApplicationStateEnum.SubmitForApprove); ServiceLocator.EmailService.SendApplicationEmailToSysadmin(application); return(application); }