Example #1
0
        public long CreateMedicalVendor(MedicalVendorEditModel model)
        {
            long toDeleteFileId = 0;

            if (model.ResultLetterCoBrandingFile != null)
            {
                model.ResultLetterCoBrandingFile = _fileRepository.Save(model.ResultLetterCoBrandingFile);
            }

            if (model.OrganizationEditModel.Id > 0)
            {
                var inDb = _medicalVendorRepository.GetMedicalVendor(model.OrganizationEditModel.Id);
                if (inDb.ResultLetterCoBrandingFileId.HasValue && inDb.ResultLetterCoBrandingFileId.Value > 0 && (model.ResultLetterCoBrandingFile == null || inDb.ResultLetterCoBrandingFileId != model.ResultLetterCoBrandingFile.Id))
                {
                    toDeleteFileId = inDb.ResultLetterCoBrandingFileId.Value;
                }
            }

            long toDeleteDoctorLetterFileId = 0;

            if (model.DoctorLetterFile != null)
            {
                model.DoctorLetterFile = _fileRepository.Save(model.DoctorLetterFile);
            }

            if (model.OrganizationEditModel.Id > 0)
            {
                var inDb = _medicalVendorRepository.GetMedicalVendor(model.OrganizationEditModel.Id);
                if (inDb.DoctorLetterFileId.HasValue && inDb.DoctorLetterFileId.Value > 0 && (model.DoctorLetterFile == null || inDb.DoctorLetterFileId != model.DoctorLetterFile.Id))
                {
                    toDeleteDoctorLetterFileId = inDb.DoctorLetterFileId.Value;
                }
            }

            var medicalVendor  = Mapper.Map <MedicalVendorEditModel, MedicalVendor>(model);
            var organizationId = Create(model.OrganizationEditModel);

            medicalVendor.Id = organizationId;
            _medicalVendorRepository.Save(medicalVendor);

            if (toDeleteFileId > 0)
            {
                ((IFileRepository)_fileRepository).Delete(toDeleteFileId);
            }

            if (toDeleteDoctorLetterFileId > 0)
            {
                ((IFileRepository)_fileRepository).Delete(toDeleteDoctorLetterFileId);
            }

            if (medicalVendor.IsHospitalPartner)
            {
                var hospitalPartner = Mapper.Map <HospitalPartnerEditModel, HospitalPartner>(model.HospitalPartnerEditModel);
                hospitalPartner.Id = medicalVendor.Id;
                var domain = _hospitalPartnerPackagFactory.CreateDomain(model.HospitalPartnerEditModel.DefaultPackages, hospitalPartner.Id);
                _hospitalPartnerRepository.Save(hospitalPartner);
                _hospitalPartnerPackageRepository.Save(domain, hospitalPartner.Id);
            }
            else
            {
                _hospitalPartnerRepository.Delete(medicalVendor.Id);
            }

            return(organizationId);
        }