Agribusiness.Web.Services.PersonService.CreateSeminarPerson C# (CSharp) Method

CreateSeminarPerson() public method

public CreateSeminarPerson ( Application application, ModelStateDictionary modelState ) : Person
application Application
modelState ModelStateDictionary
return Person
        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;
        }