Exemple #1
0
 public BranchController
 (
     IStatsService statService,
     IUserService userService,
     ICustomerService customerService,
     IOrderService orderService,
     IDocumentService documentService,
     IMenuTypeService menuTypeService,
     IMenuService menuService,
     ITableService tableService,
     IFirmService firmService,
     UserManager <ApplicationUser> userManager,
     ILogger <BranchController> logger
 )
 {
     _firmService     = firmService;
     _userManager     = userManager;
     _tableService    = tableService;
     _menuService     = menuService;
     _menuTypeService = menuTypeService;
     _documentService = documentService;
     _orderService    = orderService;
     _customerService = customerService;
     _userService     = userService;
     _logger          = logger;
     _statService     = statService;
 }
        public frmFirmMaster(IFirmService firmService)
            : this()
        {
            _firmService = firmService;

            BindForm();
        }
Exemple #3
0
 public HomeController(ILogger <HomeController> logger, IUserService userService, IFirmService firmService, UserManager <ApplicationUser> userManager, IHostingEnvironment hostingEnvironment)
 {
     _hostingEnvironment = hostingEnvironment;
     _userManager        = userManager;
     _firmService        = firmService;
     _userService        = userService;
     _logger             = logger;
 }
Exemple #4
0
        public ManageCompaniesPresenter(IManageCompaniesView view, IFirmService firmService) : base(view)
        {
            Guard.WhenArgument(firmService, "firmService").IsNull().Throw();

            this.firmService         = firmService;
            view.EventLoadCompanies += this.OnLoadCompanies;
            view.EventUpdateFirm    += this.OnUpdateFirm;
        }
        public FirmsPresenter(IFirmsView view, IFirmService firmService) : base(view)
        {
            Guard.WhenArgument(firmService, "firmService").IsNull().Throw();

            this.firmService = firmService;

            view.EventGetFirms    += this.OnGetFirms;
            view.EventSearchFirms += this.OnSearchFirms;
        }
Exemple #6
0
 public SeminarApplicationController(IRepository <Application> applicationRepository, IFirmService firmService, INotificationService notificationService, IEventService eventService, IPictureService pictureService, IPersonService personService, IRepositoryFactory repositoryFactory)
 {
     _applicationRepository = applicationRepository;
     _firmService           = firmService;
     _notificationService   = notificationService;
     _eventService          = eventService;
     _pictureService        = pictureService;
     _personService         = personService;
     _repositoryFactory     = repositoryFactory;
 }
 public SeminarApplicationController(IRepository<Application> applicationRepository, IFirmService firmService, INotificationService notificationService, IEventService eventService, IPictureService pictureService, IPersonService personService, IRepositoryFactory repositoryFactory)
 {
     _applicationRepository = applicationRepository;
     _firmService = firmService;
     _notificationService = notificationService;
     _eventService = eventService;
     _pictureService = pictureService;
     _personService = personService;
     _repositoryFactory = repositoryFactory;
 }
 public CustomerController(IBranchService branchService, ICountryService countryService, ILogger <CustomerController> logger, ITableService tableService, ICustomerService customerService, IMenuTypeService menuTypeService, IFirmService firmService, IOrderService orderService)
 {
     _logger          = logger;
     _tableService    = tableService;
     _customerService = customerService;
     _menuTypeService = menuTypeService;
     _firmService     = firmService;
     _branchService   = branchService;
     _countryService  = countryService;
     _orderService    = orderService;
 }
        public InformationRequestController(IRepository<InformationRequest> informationrequestRepository, IRepository<InformationRequestNote> informationRequestNoteRepository, IRepositoryWithTypedId<AddressType, char> addressTypeRepository, IFirmService firmService, IRepository<User> userRepository, IRepository<Person> personRepository )
        {
            _informationrequestRepository = informationrequestRepository;
            _informationRequestNoteRepository = informationRequestNoteRepository;
            _addressTypeRepository = addressTypeRepository;
            _firmService = firmService;
            _userRepository = userRepository;
            _personRepository = personRepository;

            _membershipService = new AccountMembershipService();
        }
Exemple #10
0
 public frmSalesOrder(ITransactionService transactionServices, ICustomerService customerServices,
                      IFirmService firmServices)
     : this()
 {
     _transactionServices = transactionServices;
     _customerServices    = customerServices;
     _firmServices        = firmServices;
     dtSalesDt.Value      = DateTime.Today;
     { ConfigDataGridView(dgvJewel); }
     BindMemoForm();
 }
Exemple #11
0
        public InformationRequestController(IRepository <InformationRequest> informationrequestRepository, IRepository <InformationRequestNote> informationRequestNoteRepository, IRepositoryWithTypedId <AddressType, char> addressTypeRepository, IFirmService firmService, IRepository <User> userRepository, IRepository <Person> personRepository)
        {
            _informationrequestRepository     = informationrequestRepository;
            _informationRequestNoteRepository = informationRequestNoteRepository;
            _addressTypeRepository            = addressTypeRepository;
            _firmService      = firmService;
            _userRepository   = userRepository;
            _personRepository = personRepository;

            _membershipService = new AccountMembershipService();
        }
        public void SaveTestFirm()
        {
            string path = @"D:\ForFiles\UnitTest";
            var    mock = new Mock <IFirmService>();

            mock.Setup(obj => obj.Save(path, new List <Firm>()));

            IFirmService service = mock.Object;

            service.Save(path, new List <Firm>());
        }
Exemple #13
0
        public static FirmListViewModel Create(IRepository <Firm> firmRepository, IFirmService firmService)
        {
            Check.Require(firmRepository != null, "Repository is required.");

            var viewModel = new FirmListViewModel()
            {
                Firms        = firmService.GetAllFirms(),
                PendingFirms = firmRepository.Queryable.Where(a => a.Review).OrderBy(a => a.Id).ToList()
            };

            return(viewModel);
        }
Exemple #14
0
        public UserProfilePresenter(IUserProfileView view, IUserService userService,
                                    IFirmService firmService) : base(view)
        {
            Guard.WhenArgument(userService, "userService").IsNull().Throw();
            Guard.WhenArgument(firmService, "firmService").IsNull().Throw();

            this.userService = userService;
            this.firmService = firmService;

            this.View.FindRegularUser += FindRegularUser;
            this.View.FindFirmUser    += FindFirmUser;
        }
Exemple #15
0
        public PersonService(IRepository <Firm> firmRepository, IRepository <Person> personRepository, IRepository <SeminarPerson> seminarPersonRepository, IRepository <Seminar> seminarRepository, IRepositoryWithTypedId <User, Guid> userRepository, IFirmService firmService, IRepositoryWithTypedId <AddressType, char> addressTypeRepository, IRepositoryWithTypedId <ContactType, char> contactTypeRepository, IRepository <Commodity> commodityRepository)
        {
            _firmRepository          = firmRepository;
            _personRepository        = personRepository;
            _seminarPersonRepository = seminarPersonRepository;
            _seminarRepository       = seminarRepository;
            _userRepository          = userRepository;
            _firmService             = firmService;
            _addressTypeRepository   = addressTypeRepository;
            _contactTypeRepository   = contactTypeRepository;
            _commodityRepository     = commodityRepository;

            _membershipService = new AccountMembershipService();
        }
 public AttendeeController(IRepository <Seminar> seminarRespository, IRepositoryWithTypedId <User, Guid> userRepository, IRepository <SeminarPerson> seminarPersonRepository
                           , IRepository <Person> personRepository, IRepository <Firm> firmRepository
                           , IPersonService personService, IRegistrationService registrationService, IFirmService firmService, Agribusiness.Web.Services.INotificationService notificationService)
 {
     _seminarRespository      = seminarRespository;
     _userRepository          = userRepository;
     _seminarPersonRepository = seminarPersonRepository;
     _personRepository        = personRepository;
     _firmRepository          = firmRepository;
     _personService           = personService;
     _registrationService     = registrationService;
     _firmService             = firmService;
     _notificationService     = notificationService;
 }
        public CustomerRegistrationService(IConfiguration configuration, IOptions <AzureAadhaarBlobConfig> azureBlobConfig, IFirmService firmService, IHttpClientFactory httpClientFactory)
        {
            _configuration = configuration;

            connectionString = _configuration.GetConnectionString("DefaultConnection");

            _connection = new SqlConnection(connectionString);

            _azureBlobConfig = azureBlobConfig;

            _firmService = firmService;

            _httpClientFactory = httpClientFactory;
        }
 public AttendeeController(IRepository<Seminar> seminarRespository, IRepositoryWithTypedId<User, Guid> userRepository, IRepository<SeminarPerson> seminarPersonRepository
                         , IRepository<Person> personRepository, IRepository<Firm> firmRepository
                         , IPersonService personService, IRegistrationService registrationService, IFirmService firmService, Agribusiness.Web.Services.INotificationService notificationService)
 {
     _seminarRespository = seminarRespository;
     _userRepository = userRepository;
     _seminarPersonRepository = seminarPersonRepository;
     _personRepository = personRepository;
     _firmRepository = firmRepository;
     _personService = personService;
     _registrationService = registrationService;
     _firmService = firmService;
     _notificationService = notificationService;
 }
Exemple #19
0
        public PersonService(IRepository<Firm> firmRepository, IRepository<Person> personRepository, IRepository<SeminarPerson> seminarPersonRepository, IRepository<Seminar> seminarRepository, IRepositoryWithTypedId<User, Guid> userRepository, IFirmService firmService, IRepositoryWithTypedId<AddressType, char> addressTypeRepository, IRepositoryWithTypedId<ContactType, char> contactTypeRepository, IRepository<Commodity> commodityRepository )
        {
            _firmRepository = firmRepository;
            _personRepository = personRepository;
            _seminarPersonRepository = seminarPersonRepository;
            _seminarRepository = seminarRepository;
            _userRepository = userRepository;
            _firmService = firmService;
            _addressTypeRepository = addressTypeRepository;
            _contactTypeRepository = contactTypeRepository;
            _commodityRepository = commodityRepository;

            _membershipService = new AccountMembershipService();
        }
Exemple #20
0
        public FirmDetailsPresenter(IFirmDetailsView view, IUserService userService,
                                    IFirmService firmService) : base(view)
        {
            Guard.WhenArgument(userService, "userService").IsNull().Throw();
            Guard.WhenArgument(firmService, "firmService").IsNull().Throw();

            this.userService = userService;
            this.firmService = firmService;

            view.EventGetFirm         += this.OnGetFirm;
            view.EventGetLoggedInUser += this.OnGetLoggedInUser;
            view.FirmReviewed         += this.OnFirmReviewed;
            view.FirmStarred          += this.OnFirmStarred;
            view.FirmUnstarred        += this.OnFirmUnstarred;
        }
 public AdminController(
     ILogger <AdminController> logger,
     IUserService userService,
     ICountryService countryService,
     IBranchService branchService,
     IFirmService firmService,
     UserManager <ApplicationUser> userManager)
 {
     _firmService    = firmService;
     _userManager    = userManager;
     _branchService  = branchService;
     _userManager    = userManager;
     _countryService = countryService;
     _userService    = userService;
     _logger         = logger;
 }
 public FirmController
 (
     ICountryService countryService,
     IUserService userService,
     IDocumentService documentService,
     IBranchService branchService,
     IFirmService firmService,
     ILogger <FirmController> logger
 )
 {
     _firmService     = firmService;
     _branchService   = branchService;
     _documentService = documentService;
     _userService     = userService;
     _logger          = logger;
     _countryService  = countryService;
 }
Exemple #23
0
 public ResultsController(
     ICourseService courseService,
     IDriverService driverService,
     ITruckService truckService,
     IFirmService firmService,
     IAsphaltBaseService asphaltBaseService,
     IAsphaltMixtureService asphaltMixtureService,
     IRoadObjectService roadObjectService)
 {
     this.courseService         = courseService;
     this.driverService         = driverService;
     this.truckService          = truckService;
     this.firmService           = firmService;
     this.asphaltBaseService    = asphaltBaseService;
     this.asphaltMixtureService = asphaltMixtureService;
     this.roadObjectService     = roadObjectService;
 }
Exemple #24
0
        public UploadProfilePicPresenter(
            IUploadProfilePicView view,
            IUserService userService,
            IFirmService firmService,
            IImageProcessorService imgProcessorService,
            IFileSaverService fileSaverService)
            : base(view)
        {
            Guard.WhenArgument(userService, "userService").IsNull().Throw();
            Guard.WhenArgument(firmService, "firmService").IsNull().Throw();
            Guard.WhenArgument(imgProcessorService, "imageProcessorService").IsNull().Throw();
            Guard.WhenArgument(fileSaverService, "fileSaverService").IsNull().Throw();

            this.userService            = userService;
            this.firmService            = firmService;
            this.fileSaverService       = fileSaverService;
            this.imageProcessorService  = imgProcessorService;
            this.View.EventImageUpload += this.OnImageUpload;
        }
        public ManageUserProfilePresenter(IManageUserProfileView view, IFirmService firmService,
                                          ISkillService skillService, IProjectService projectService, IUserService userService) : base(view)
        {
            Guard.WhenArgument(userService, "userService").IsNull().Throw();
            Guard.WhenArgument(firmService, "firmService").IsNull().Throw();
            Guard.WhenArgument(skillService, "skillService").IsNull().Throw();
            Guard.WhenArgument(projectService, "projectService").IsNull().Throw();

            this.userService    = userService;
            this.firmService    = firmService;
            this.skillService   = skillService;
            this.projectService = projectService;

            this.View.AddSkill            += AddSkill;
            this.View.AddProject          += AddProject;
            this.View.UpdateUserInfo      += UpdateUserInfo;
            this.View.UpdateFirmInfo      += UpdateFirmInfo;
            this.View.UpdateUserAvatarUrl += OnUpdateUserAvatarUrl;
            this.View.UpdateFirmAvatarUrl += OnUpdateFirmAvatarUrl;
        }
        public static AddConfirmViewModel Create(IRepository repository, IFirmService firmService, Seminar seminar, Person person, SeminarPerson seminarPerson, Firm firm = null)
        {
            Check.Require(repository != null, "Repository is required.");

            var viewModel = new AddConfirmViewModel()
            {
                //Firms = firmService.GetAllFirms(),
                Seminar       = seminar, Person = person,
                SeminarPerson = seminarPerson ?? new SeminarPerson(),
                Firm          = firm
            };

            var firms = new List <Firm>(firmService.GetAllFirms());

            firms.Add(new Firm("Other", null, null));

            viewModel.Firms = firms;

            return(viewModel);
        }
Exemple #27
0
        public PersonController(IRepository <Person> personRepository, IRepositoryWithTypedId <User, Guid> userRepository, IRepositoryWithTypedId <SeminarRole, string> seminarRoleRepository
                                , IRepository <SeminarPerson> seminarPersonRepository, IRepository <Seminar> seminarRepository, IRepositoryWithTypedId <Agribusiness.Core.Domain.Membership, Guid> membershipRepository
                                , IPictureService pictureService, IPersonService personService, IFirmService firmService, IRegistrationService registrationService
                                , IvCardService vCardService, IEventService eventService, IRepositoryFactory repositoryFactory)
        {
            _personRepository        = personRepository;
            _userRepository          = userRepository;
            _seminarRoleRepository   = seminarRoleRepository;
            _seminarPersonRepository = seminarPersonRepository;
            _seminarRepository       = seminarRepository;
            _membershipRepository    = membershipRepository;
            _pictureService          = pictureService;
            _personService           = personService;
            _firmService             = firmService;
            _registrationService     = registrationService;
            _vCardService            = vCardService;
            _eventService            = eventService;
            _repositoryFactory       = repositoryFactory;

            _membershipService = new AccountMembershipService();
        }
        public PersonController(IRepository<Person> personRepository, IRepositoryWithTypedId<User, Guid> userRepository, IRepositoryWithTypedId<SeminarRole, string> seminarRoleRepository
            , IRepository<SeminarPerson> seminarPersonRepository, IRepository<Seminar> seminarRepository, IRepositoryWithTypedId<Agribusiness.Core.Domain.Membership, Guid>  membershipRepository
            , IPictureService pictureService, IPersonService personService, IFirmService firmService, IRegistrationService registrationService
            , IvCardService vCardService,IEventService eventService, IRepositoryFactory repositoryFactory)
        {
            _personRepository = personRepository;
            _userRepository = userRepository;
            _seminarRoleRepository = seminarRoleRepository;
            _seminarPersonRepository = seminarPersonRepository;
            _seminarRepository = seminarRepository;
            _membershipRepository = membershipRepository;
            _pictureService = pictureService;
            _personService = personService;
            _firmService = firmService;
            _registrationService = registrationService;
            _vCardService = vCardService;
            _eventService = eventService;
            _repositoryFactory = repositoryFactory;

            _membershipService = new AccountMembershipService();
        }
        public static AdminPersonViewModel Create(IRepository repository, IFirmService firmService, string siteId, int?seminarId, Person person = null, string email = null)
        {
            Check.Require(repository != null, "Repository is required.");

            var seminar   = seminarId.HasValue ? repository.OfType <Seminar>().GetNullableById(seminarId.Value) : null;
            var viewModel = new AdminPersonViewModel()
            {
                PersonViewModel = PersonViewModel.Create(repository, firmService, siteId, seminar, person, email),
                SeminarRoles    = repository.OfType <SeminarRole>().Queryable,
                RoomTypes       = repository.OfType <RoomType>().Queryable.Where(a => a.IsActive),
                SeminarId       = seminarId,
                Invited         = SiteService.GetLatestSeminar(siteId).Invitations.Where(a => a.Person == person).Any(),
                SiteId          = siteId
            };

            // determine if last reg is the current seminar
            if (seminar != null)
            {
                viewModel.IsCurrentSeminar = seminar.Id == SiteService.GetLatestSeminar(siteId).Id;
            }

            return(viewModel);
        }
        public static ProfileViewModel Create(IRepository repository, IFirmService firmService, string userId, string site)
        {
            Check.Require(repository != null, "Repository must be supplied");
            Check.Require(firmService != null, "firmService is required.");

            var user = repository.OfType<User>().Queryable.Where(a => a.LoweredUserName == userId.ToLower()).FirstOrDefault();

            Check.Require(user != null, "user is required.");

            var person = user.Person;

            Check.Require(person != null, "person is required.");

            var seminarPerson = person.GetLatestRegistration(site);

            var viewModel = new ProfileViewModel()
                                {
                                    Firm = seminarPerson.Firm,
                                    SeminarPerson = seminarPerson,
                                    Person = person
                                };

            return viewModel;
        }
Exemple #31
0
        public static ProfileViewModel Create(IRepository repository, IFirmService firmService, string userId, string site)
        {
            Check.Require(repository != null, "Repository must be supplied");
            Check.Require(firmService != null, "firmService is required.");

            var user = repository.OfType <User>().Queryable.Where(a => a.LoweredUserName == userId.ToLower()).FirstOrDefault();

            Check.Require(user != null, "user is required.");

            var person = user.Person;

            Check.Require(person != null, "person is required.");

            var seminarPerson = person.GetLatestRegistration(site);

            var viewModel = new ProfileViewModel()
            {
                Firm          = seminarPerson.Firm,
                SeminarPerson = seminarPerson,
                Person        = person
            };

            return(viewModel);
        }
        public static AdminPersonViewModel Create(IRepository repository, IFirmService firmService, string siteId, int? seminarId, Person person = null, string email = null)
        {
            Check.Require(repository != null, "Repository is required.");

            var seminar = seminarId.HasValue ? repository.OfType<Seminar>().GetNullableById(seminarId.Value) : null;
            var viewModel = new AdminPersonViewModel()
                                {
                                    PersonViewModel = PersonViewModel.Create(repository, firmService, siteId, seminar, person, email),
                                    SeminarRoles = repository.OfType<SeminarRole>().Queryable,
                                    RoomTypes = repository.OfType<RoomType>().Queryable.Where(a=>a.IsActive),
                                    SeminarId = seminarId,
                                    Invited = SiteService.GetLatestSeminar(siteId).Invitations.Where(a => a.Person == person).Any(),
                                    SiteId = siteId
                                };

            // determine if last reg is the current seminar
            if (seminar != null)
            {
                viewModel.IsCurrentSeminar = seminar.Id == SiteService.GetLatestSeminar(siteId).Id;

            }

            return viewModel;
        }
 public FirmController(IRepository<Firm> firmRepository, IFirmService firmService)
 {
     _firmRepository = firmRepository;
     _firmService = firmService;
 }
 public FirmsPresenterMock(IFirmsView view, IFirmService firmService) : base(view, firmService)
 {
 }
        public static ApplicationViewModel Create(IRepository repository, IFirmService firmService, string userId, string siteId, Application application = null, bool seminarTerms = false)
        {
            Check.Require(repository != null, "Repository must be supplied");

            var viewModel = new ApplicationViewModel
                                {
                                    Application = application ?? new Application(),
                                    // always get the latest
                                    Seminar = SiteService.GetLatestSeminar(siteId),
                                    //Commodities = repository.OfType<Commodity>().Queryable.Where(a=>a.IsActive).OrderBy(a=>a.Name).ToList(),
                                    Countries = repository.OfType<Country>().GetAll(),
                                    CommunicationOptions = repository.OfType<CommunicationOption>().GetAll(),
                                    SeminarTerms = seminarTerms
                                };

            // load commodities
            var commodities = repository.OfType<Commodity>().Queryable.Where(a => a.IsActive).OrderBy(a => a.Name).ToList();
            viewModel.Commodities = commodities;

            // load the firm types
            var firmTypes = repository.OfType<FirmType>().Queryable.Where(a => a.IsActive).OrderBy(a => a.Name).ToList();
            viewModel.FirmTypes = firmTypes;

            var user = repository.OfType<User>().Queryable.FirstOrDefault(a => a.LoweredUserName == userId.ToLower());
            if (user == null) throw new ArgumentException(string.Format("Unable to load user with userid {0}.", userId));

            // populate the application with person info
            var person = user.Person;
            // if person is not null, there should be at least one registration (seminar person)
            if (person != null)
            {
                viewModel.PersonId = person.Id;

                viewModel.Application.FirstName = person.FirstName;
                viewModel.Application.MI = person.MI;
                viewModel.Application.LastName = person.LastName;
                viewModel.Application.BadgeName = person.BadgeName;

                viewModel.Application.CommunicationOption = person.CommunicationOption;
                viewModel.Application.ContactInformationRelease = person.ContactInformationRelease;

                // get latest seminar information
                var reg = person.GetLatestRegistration(siteId);
                if (reg != null)
                {
                    viewModel.Application.JobTitle = reg.Title;
                }

                // copy assistant information
                var assistant = person.Contacts.FirstOrDefault(a => a.ContactType.Id == 'A');

                if (assistant != null)
                {
                    viewModel.Application.AssistantEmail = assistant.Email;
                    viewModel.Application.AssistantFirstName = assistant.FirstName;
                    viewModel.Application.AssistantLastName = assistant.LastName;
                    viewModel.Application.AssistantPhone = assistant.Phone;
                }

                var seminarPeople = person.GetLatestRegistration(siteId);
                if (seminarPeople != null)
                {
                    viewModel.Application.Firm = seminarPeople.Firm;
                }

                viewModel.Application.FirmPhone = person.Phone;
                viewModel.Application.FirmPhoneExt = person.PhoneExt;

                var address = person.Addresses.FirstOrDefault(a => a.AddressType.Id == 'B');
                if (address != null)
                {
                    viewModel.Application.FirmAddressLine1 = address.Line1;
                    viewModel.Application.FirmAddressLine2 = address.Line2;
                    viewModel.Application.FirmCity = address.City;
                    viewModel.Application.FirmState = address.State;
                    viewModel.Application.FirmZip = address.Zip;
                    viewModel.Application.Country = address.Country;
                }
            }

            viewModel.HasPhoto = user.Person != null && user.Person.MainProfilePicture != null;

            // get the firms and add the "Other" option
            //var firms = new List<Firm>(firmService.GetAllFirms());
            //firms = firms.Where(a=>!a.Review && a.Name != "Other (Not Listed)").OrderBy(a=>a.Name).ToList();

            var tmpFirms = firmService.GetAllFirms();
            var firms = new List<Firm>();
            firms.Add(tmpFirms.First(a => a.Name == "Other (Not Listed)"));
            firms.AddRange(tmpFirms.Where(a=>!a.Review && a.Name != "Other (Not Listed)").OrderBy(a=>a.Name).ToList());

            viewModel.Firms = firms;

            return viewModel;
        }
 public DocumentServices(CoDbContext data, IFirmService firmService)
 {
     this._data = data;
 }
 public FirmController(IFirmService Firmservice, IMapper mapper)
 {
     this._Firmservice = Firmservice;
     this._mapper      = mapper;
 }
 public FirmController(IFirmService firmService, IJobPostService jobPostService, IMemoryCache memCache)
 {
     this._firmService    = firmService;
     this._jobPostService = jobPostService;
     this._memCache       = memCache;
 }
 public FirmsController(IFirmService firmService)
 {
     this.firmService = firmService;
 }
        public static PersonViewModel Create(IRepository repository, IFirmService firmService, string site, Seminar seminar = null, Person person = null, string email = null, Firm firm = null)
        {
            Check.Require(repository != null, "Repository must be supplied");

            var viewModel = new PersonViewModel()
            {
                Person = person ?? new Person(),
                Addresses = repository.OfType<AddressType>().Queryable.Select(a => new Address() { AddressType = a}).ToList(),
                Contacts = repository.OfType<ContactType>().Queryable.Select( a => new Contact(){ContactType = a}).ToList(),
                Countries = repository.OfType<Country>().GetAll(),
                CommunicationOptions = repository.OfType<CommunicationOption>().GetAll(),
                SeminarPerson = person != null ? person.GetLatestRegistration(site) : null,
                Email = email,
                Seminar = seminar,
                Commodities = repository.OfType<Commodity>().Queryable.Where(a=>a.IsActive).ToList(),
                Firm = firm ?? new Firm()
            };

            if (firm == null && viewModel.SeminarPerson != null)
            {
                viewModel.Firm = viewModel.SeminarPerson.Firm;
            }

            // find any addresses and replace them into the list
            if (person != null)
            {
                foreach(var a in person.Addresses)
                {
                    var addr = viewModel.Addresses.Where(b => b.AddressType == a.AddressType).FirstOrDefault();

                    if (addr != null) viewModel.Addresses.Remove(addr);

                    viewModel.Addresses.Add(a);
                }

                foreach (var a in person.Contacts)
                {
                    var ct = viewModel.Contacts.Where(b => b.ContactType == a.ContactType).FirstOrDefault();

                    if (ct != null) viewModel.Contacts.Remove(ct);

                    viewModel.Contacts.Add(a);
                }
            }

            // reorder so always in the same order
            viewModel.Addresses = viewModel.Addresses.OrderBy(a => a.AddressType.Id).ToList();
            viewModel.Contacts = viewModel.Contacts.OrderBy(a => a.ContactType.Id).ToList();

            // get the firms and add the "Other" option
            var firms = new List<Firm>(firmService.GetAllFirms());
            firms.Add(new Firm() { Name = "Other (Not Listed)" });

            viewModel.Firms = firms;
            if (viewModel.Person.User != null) viewModel.UserName = viewModel.Person.User.UserName;

            return viewModel;
        }