public Person CreateSeminarPerson(Application application, ModelStateDictionary modelState)
{
var person = SetPerson(application, application.User.Person);
var firm = application.Firm ?? new Firm(application.FirmName, !string.IsNullOrWhiteSpace(application.FirmDescription)? application.FirmDescription : "n/a");
var seminarPerson = new SeminarPerson()
{
Seminar = application.Seminar,
Title = application.JobTitle,
Firm = firm,
Commodities = new List<Commodity>(application.Commodities),
FirmType = application.FirmType,
OtherFirmType = application.OtherFirmType
};
if (!string.IsNullOrWhiteSpace(application.OtherCommodity))
{
// transfer "other" commodities
var others = application.OtherCommodity.Split(',');
if (others.Count() > 0)
{
foreach (var com in others)
{
var existing = _commodityRepository.Queryable.Where(a => a.Name == com).FirstOrDefault();
// check for an existing commodity
if (existing != null)
{
// assign that commodity if it exists
seminarPerson.Commodities.Add(existing);
}
else
{
// otherwise create a new one
var newcom = new Commodity() { IsActive = false, Name = com };
seminarPerson.Commodities.Add(newcom);
}
}
}
}
person.AddSeminarPerson(seminarPerson);
UpdateAddress(person, application);
UpdateAssistant(person, application);
person.TransferValidationMessagesTo(modelState);
seminarPerson.TransferValidationMessagesTo(modelState);
if (modelState.IsValid)
{
_firmRepository.EnsurePersistent(firm);
_personRepository.EnsurePersistent(person);
_seminarPersonRepository.EnsurePersistent(seminarPerson);
return person;
}
return null;
}