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