public void CreateProductRequestRegistration(ProductRequestRegistration registration) { var existingRegistration = ProductRequestRegistrationRepository.GetSatisfiedBy(o => o.ExternalId == registration.ExternalId); if (existingRegistration != null) throw new EntityAlreadyExistsException(typeof(DataEntities.ProductRequests.ProductRequestRegistration), registration.ExternalId); var existingRequestType = ProductRequestTypeRepository.GetSatisfiedBy(o => o.ExternalId == registration.ProductRequestTypeId); if (existingRequestType == null) throw new EntityNotFoundException(typeof(ProductRequestType), registration.ProductRequestTypeId); var createdByAccount = AccountRepository.GetSatisfiedBy(o => o.ExternalId == registration.CreatedByAccountId); if (createdByAccount == null) throw new AccountNotFoundException(registration.CreatedByAccountId); var newEntity = MappingEngine.Map<ProductRequestRegistration, DataEntities.ProductRequests.ProductRequestRegistration>( registration); newEntity.ProductRequestTypeId = existingRequestType.ProductRequestTypeId; newEntity.CreatedOn = SystemTime.Now; newEntity.CreatedByAccountId = createdByAccount.AccountId; ProductRequestRegistrationRepository.Insert(newEntity); UpdateRegistrationTasks(registration, newEntity.ProductRequestRegistrationId, createdByAccount); }
private void CreateNewTask(ProductRequestRegistration registration, int registrationId, ProductRequestRegistrationTask task, DataEntities.Auth.Account dataAccount) { var taskForType = GetTasksByType(registration.ProductRequestTypeId).FirstOrDefault(o => o.ExternalId == task.ProductRequestTaskId); if (taskForType == null) throw new EntityNotFoundException(typeof(ProductRequestRegistrationTask), task.ProductRequestTaskId); var newEntity = new DataEntities.ProductRequests.ProductRequestRegistrationTask { ProductRequestTaskId = taskForType.ProductRequestTaskId, ProductRequestRegistrationId = registrationId, }; SetTaskData(newEntity, task, dataAccount.AccountId); ProductRequestRegistrationTaskRepository.Insert(newEntity); }
private void UpdateRegistrationTasks(ProductRequestRegistration registration, int parentRegistrationId, DataEntities.Auth.Account currentDataAccount) { var existingTasks = ProductRequestRegistrationTaskRepository .GetAllSatisfiedBy(o => o.ProductRequestRegistration.ExternalId == registration.ExternalId) .ToList(); if (registration.Tasks != null) foreach (var task in registration.Tasks) { var existingTask = existingTasks.FirstOrDefault(o => o.ProductRequestTask.ExternalId == task.ProductRequestTaskId); if (existingTask != null) { UpdateExistingTask(existingTask, task, currentDataAccount); } else { CreateNewTask(registration, parentRegistrationId, task, currentDataAccount); } } }
public void UpdateProductRequestRegistration(ProductRequestRegistration registration) { var existingRegistration = ProductRequestRegistrationRepository.GetSatisfiedBy(o => o.ExternalId == registration.ExternalId); if (existingRegistration == null) throw new EntityNotFoundException(typeof(DataEntities.ProductRequests.ProductRequestRegistration), registration.ExternalId); var existingRequestType = ProductRequestTypeRepository.GetSatisfiedBy(o => o.ExternalId == registration.ProductRequestTypeId); if (existingRequestType == null) throw new EntityNotFoundException(typeof(ProductRequestType), registration.ProductRequestTypeId); var createdByAccount = AccountRepository.GetSatisfiedBy(o => o.ExternalId == registration.CreatedByAccountId); if (createdByAccount == null) throw new AccountNotFoundException(registration.CreatedByAccountId); if (!string.Equals(existingRegistration.Description, registration.Description, StringComparison.CurrentCulture)) { existingRegistration.Description = registration.Description; ProductRequestRegistrationRepository.Update(existingRegistration); } UpdateRegistrationTasks(registration, existingRegistration.ProductRequestRegistrationId, createdByAccount); }