Example #1
0
        public async Task <CarePackagePlainResponse> CreateAsync(
            CarePackageForCreationDomain carePackageForCreation)
        {
            var validPackageTypes = new[] { PackageType.ResidentialCare, PackageType.NursingCare };

            if (!validPackageTypes.Contains(carePackageForCreation.PackageType))
            {
                throw new ApiException($"Please select a valid package type.",
                                       StatusCodes.Status422UnprocessableEntity);
            }

            var carePackageEntity         = carePackageForCreation.ToEntity();
            var carePackageSettingsEntity = carePackageForCreation.ToSettings();
            var histories = new List <CarePackageHistory>()
            {
                new CarePackageHistory
                {
                    Description            = HistoryStatus.NewPackage.GetDisplayName(),
                    RequestMoreInformation = "",
                    Status = HistoryStatus.NewPackage
                }
            };

            // Get and set random client on package
            var randomClient = await _serviceUserGateway.GetRandomAsync().ConfigureAwait(false);

            carePackageEntity.ServiceUserId = randomClient.Id;
            carePackageEntity.Status        = PackageStatus.New;

            carePackageEntity.Settings  = carePackageSettingsEntity;
            carePackageEntity.Histories = histories;
            _carePackageGateway.Create(carePackageEntity);

            // TODO: Create record in package history?

            await _dbManager.SaveAsync("Failed to create care package").ConfigureAwait(false);

            return(carePackageEntity.ToPlainDomain().ToResponse());
        }
 public static CarePackageSettings ToSettings(this CarePackageForCreationDomain input)
 {
     return(_mapper.Map <CarePackageSettings>(input));
 }
 public static CarePackage ToEntity(this CarePackageForCreationDomain input)
 {
     return(_mapper.Map <CarePackage>(input));
 }