예제 #1
0
 public async Task <BuildActionModel> PostBuilderAsync(BuildActionModel entity, Guid IdRepository)
 {
     return(await ExecuteHelper(async() =>
     {
         return await _httpClient.PostAsync(entity).WithParameters("idRepository", IdRepository).ResponseToModelAsync <BuildActionModel>();
     }, $"WebAPIClient.PostBuilderAsync -> POST Model error", retryPolicyEnabled : true));
 }
예제 #2
0
        public async Task <IHttpActionResult> Post([FromBody] BuildActionModel model, Guid idRepository)
        {
            return(await WebApiHelpers.ActionHelper.TryCatchWithLoggerAsync(async() =>
            {
                UDSRepository repository = _unitOfWork.Repository <UDSRepository>().Find(idRepository);
                if (repository != null && model != null && !string.IsNullOrEmpty(model.Model))
                {
                    UDSRelationModel relationModel = JsonConvert.DeserializeObject <UDSRelationModel>(model.Model);
                    ICollection <UDSRole> rolesToManage = GetEntityRoles(relationModel.Roles, repository);
                    ICollection <UDSUser> usersToManage = GetEntityUsers(relationModel.Users, repository);
                    ICollection <UDSPECMail> pecMailsToManage = GetEntityPECMails(relationModel.PECMails, repository);
                    ICollection <UDSMessage> messagesToManage = GetEntityMessages(relationModel.Messages, repository);
                    ICollection <UDSDocumentUnit> documentUnitsToManage = GetEntityDocumentUnits(relationModel.DocumentUnits, repository);
                    ICollection <UDSContact> contactsToManage = GetEntityContacts(relationModel.Contacts, repository);
                    ICollection <UDSCollaboration> collaborationsToManage = GetEntityCollaborations(relationModel.Collaborations, repository);

                    if (model.BuildType == BuildActionType.Build)
                    {
                        _unitOfWork.BeginTransaction();

                        await BuildUDSRoleAsync(rolesToManage);
                        await BuildUDSUserAsync(usersToManage);
                        await BuildUDSPECMailAsync(pecMailsToManage);
                        await BuildUDSMessageAsync(messagesToManage);
                        await BuildUDSDocumentUnitAsync(documentUnitsToManage);
                        await BuildUDSContactAsync(contactsToManage);
                        await BuildUDSCollaborationAsync(collaborationsToManage);

                        await _unitOfWork.SaveAsync();
                    }

                    if (model.BuildType == BuildActionType.Synchronize)
                    {
                        _unitOfWork.BeginTransaction();

                        await SynchroniseUDSRoleAsync(rolesToManage, model.ReferenceId, repository);
                        await SynchroniseUDSUserAsync(usersToManage, model.ReferenceId, repository);
                        await SynchroniseUDSPECMailAsync(pecMailsToManage, model.ReferenceId, repository);
                        await SynchroniseUDSMessageAsync(messagesToManage, model.ReferenceId, repository);
                        await SynchroniseUDSDocumentUnitAsync(documentUnitsToManage, model.ReferenceId, repository);
                        await SynchroniseUDSContactAsync(contactsToManage, model.ReferenceId, repository);
                        await SynchroniseUDSCollaborationAsync(collaborationsToManage, model.ReferenceId, repository);

                        await _unitOfWork.SaveAsync();
                    }
                }
                return Ok(model);
            }, BadRequest, Content, InternalServerError, _logger, LogCategories));
        }
예제 #3
0
        private async Task PostRelationsAsync(UDSEntityModel model, Guid udsRepositoryId, int environment, string userName, DateTimeOffset creationTime, BuildActionType buildActionType)
        {
            if (model == null || model.Relations == null || (model.Relations == null && (model.Users == null || !model.Users.Any())))
            {
                return;
            }

            try
            {
                BuildActionModel actionModel = new BuildActionModel
                {
                    ReferenceId = model.IdUDS,
                    BuildType   = buildActionType,
                    Model       = PrepareRelations(model, udsRepositoryId, environment, userName, creationTime, buildActionType)
                };

                await _webApiClient.PostBuilderAsync(actionModel, udsRepositoryId);
            }
            catch (Exception ex)
            {
                _logger.WriteError(new LogMessage(string.Format("PostRelationsAsync -> Errore in inserimento relazioni: {0}", ex.Message)), LogCategories);
                throw ex;
            }
        }