Beispiel #1
0
        public async Task <SubRealm> CreateAsync(SubRealmSubmit subRealmSubmit, Guid createdById)
        {
            InitSharedTransaction();

            try
            {
                SubRealmModel existingSubRealm = await subRealmRepository.GetByNameAsync(subRealmSubmit.Name, false);

                if (existingSubRealm != null)
                {
                    throw new ItemNotProcessableException($"Sub-Realm with name '{subRealmSubmit.Name}' already exists.");
                }

                SubRealmModel newSubRealm = mapper.Map <SubRealmModel>(subRealmSubmit);
                newSubRealm.ChangedBy = createdById;
                // Set a new relations list.
                newSubRealm.SubRealmPermissions             = new List <SubRealmPermissionModel>();
                newSubRealm.SubRealmApplicationDataPolicies = new List <SubRealmApplicationDataPolicyModel>();
                await AssignPermissionsToSubRealmFromPermissionIdListAsync(newSubRealm, subRealmSubmit.PermissionIds, createdById);
                await AssignApplicationDataPoliciesToSubRealmFromApplicationDataPolicyIdListAsync(newSubRealm, subRealmSubmit.ApplicationDataPolicyIds, createdById);

                SubRealmModel createdSubRealm = await subRealmRepository.CreateAsync(newSubRealm);

                CommitTransaction();

                return(mapper.Map <SubRealm>(createdSubRealm));
            }
            catch
            {
                RollbackTransaction();
                throw;
            }
        }
Beispiel #2
0
        public async Task <SubRealm> UpdateAsync(Guid subRealmId, SubRealmSubmit subRealmSubmit, Guid updatedBy)
        {
            InitSharedTransaction();

            try
            {
                SubRealmModel existingSubRealm = await subRealmRepository.GetByIdAsync(subRealmId, true);

                if (existingSubRealm == null)
                {
                    throw new ItemNotFoundException($"Sub-Realm with ID '{subRealmId}' does not exist.");
                }

                // Sub-Realm names must be unique. If the sub-realm name has changed, then check that another sub-realm does have the same name.
                if (existingSubRealm.Name != subRealmSubmit.Name)
                {
                    SubRealmModel existingNamedSubRealm = await subRealmRepository.GetByNameAsync(subRealmSubmit.Name, false);

                    if (existingNamedSubRealm != null)
                    {
                        throw new ItemNotProcessableException($"Cannot update sub-Realm with name '{subRealmSubmit.Name}', as this name is already used by another sub-realm.");
                    }
                }

                // Map any potential updates from the submit model onto the existing sub-realms model.
                if (subRealmSubmit.Name != existingSubRealm.Name)
                {
                    existingSubRealm.Name      = subRealmSubmit.Name;
                    existingSubRealm.ChangedBy = updatedBy;
                }

                if (subRealmSubmit.Description != existingSubRealm.Description)
                {
                    existingSubRealm.Description = subRealmSubmit.Description;
                    existingSubRealm.ChangedBy   = updatedBy;
                }

                await AssignPermissionsToSubRealmFromPermissionIdListAsync(existingSubRealm, subRealmSubmit.PermissionIds, updatedBy);
                await AssignApplicationDataPoliciesToSubRealmFromApplicationDataPolicyIdListAsync(existingSubRealm, subRealmSubmit.ApplicationDataPolicyIds, updatedBy);

                existingSubRealm = await subRealmRepository.UpdateAsync(existingSubRealm);

                CommitTransaction();

                return(mapper.Map <SubRealm>(existingSubRealm));
            }
            catch
            {
                RollbackTransaction();
                throw;
            }
        }
Beispiel #3
0
 public abstract Task <IActionResult> CreateSubRealmAsync([FromBody] SubRealmSubmit subRealmSubmit);
Beispiel #4
0
 public abstract Task <IActionResult> UpdateSubRealmAsync([FromRoute][Required] Guid subRealmId, [FromBody] SubRealmSubmit subRealmSubmit);
Beispiel #5
0
 public async override Task <IActionResult> UpdateSubRealmAsync([FromRoute, Required] Guid subRealmId, [FromBody] SubRealmSubmit subRealmSubmit)
 {
     return(Ok(await subRealmService.UpdateAsync(subRealmId, subRealmSubmit, ClaimsHelper.GetUserId(User))));
 }
Beispiel #6
0
 public async override Task <IActionResult> CreateSubRealmAsync([FromBody] SubRealmSubmit subRealmSubmit)
 {
     return(Ok(await subRealmService.CreateAsync(subRealmSubmit, ClaimsHelper.GetUserId(User))));
 }