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)); }
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)); }
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; } }