public Customer CreateCustomer(MassRegistrationEditModel model, OrganizationRoleUser createdByOrgRoleUser) { var customer = new Customer(); customer.Name = new Name { FirstName = model.FirstName, LastName = model.LastName }; customer.HomePhoneNumber = model.HomeNumber; if (!string.IsNullOrEmpty(model.Email)) { string[] emailSplitUp = model.Email.Split(new[] { '@' }); customer.Email = new Email { Address = emailSplitUp[0], DomainName = emailSplitUp[1] }; } customer.Address = Mapper.Map <AddressEditModel, Address>(model.Address); customer.UserLogin = new UserLogin { UserName = GenerateUniqueUserName(model.FirstName + "." + model.LastName), Password = GenerateUniquePassword(), IsSecurityQuestionVerified = false, UserVerified = false }; customer.Gender = (Gender)model.Gender; if (model.DateOfBirth.HasValue) { customer.DateOfBirth = model.DateOfBirth; } customer.AddedByRoleId = createdByOrgRoleUser.RoleId; customer.EmployeeId = model.EmployeeId; customer.InsuranceId = model.InsuranceId; if (!string.IsNullOrEmpty(model.Ssn)) { customer.Ssn = model.Ssn.Replace("-", ""); } var height = new Height(model.HeightInFeet, model.HeightInInch); customer.Height = height.TotalInches > 0 ? height : null; if (model.Weight > 0) { customer.Weight = new Weight(model.Weight); } customer.Race = (Race)System.Enum.Parse(typeof(Race), model.Race, true); customer.Copay = model.Copay; customer.MedicareAdvantagePlanName = model.MedicareAdvantagePlanName; return(customer); }
public MassRegistrationEditModel GetRegistrationEditModel(DataRow row, IEnumerable <State> states, IEnumerable <Country> countries, long eventId, List <long> selectedAppointmentIds) { var registrationEditModel = new MassRegistrationEditModel(); registrationEditModel.FirstName = GetRowValue(row, "FirstName"); registrationEditModel.LastName = GetRowValue(row, "LastName"); registrationEditModel.Email = GetRowValue(row, "Email"); registrationEditModel.Address = new AddressEditModel(); registrationEditModel.Address.StreetAddressLine1 = GetRowValue(row, "Address"); registrationEditModel.Address.StreetAddressLine2 = GetRowValue(row, "Suite"); registrationEditModel.Address.City = GetRowValue(row, "City"); registrationEditModel.Address.StateId = states.Where(s => s.Name == GetRowValue(row, "State")).Select(s => s.Id).FirstOrDefault(); registrationEditModel.Address.CountryId = countries.Where(c => c.Name == GetRowValue(row, "Country")).Select(c => c.Id).FirstOrDefault(); registrationEditModel.Address.ZipCode = GetRowValue(row, "Zip"); var packages = _eventPackageRepository.GetPackagesForEvent(eventId); var appointments = _slotService.GetSlots(eventId, AppointmentStatus.Free).ToList(); appointments.RemoveAll(a => selectedAppointmentIds.Contains(a.Id)); registrationEditModel.PackageId = packages.Where(p => p.Package.Name == GetRowValue(row, "Package")).Select(p => p.PackageId).FirstOrDefault(); var appointmentString = GetRowValue(row, "AppointmentTime"); registrationEditModel.AppointmentId = string.IsNullOrEmpty(appointmentString) ? 0 : appointments.Where(ap => ap.StartTime.ToShortTimeString() == Convert.ToDateTime((string)appointmentString).ToShortTimeString()).Select(ap => ap.Id).FirstOrDefault(); if (registrationEditModel.AppointmentId > 0) { selectedAppointmentIds.Add(registrationEditModel.AppointmentId); } var dateString = GetRowValue(row, "DOB"); DateTime date; if (DateTime.TryParse(dateString, out date)) { registrationEditModel.DateOfBirth = date; } registrationEditModel.HomeNumber = PhoneNumber.Create(GetRowValue(row, "PhoneNumber"), PhoneNumberType.Home); try { registrationEditModel.EmployeeId = GetRowValue(row, "EmployeeId"); } catch { } try { registrationEditModel.InsuranceId = GetRowValue(row, "MemberId"); } catch { } try { registrationEditModel.InsuranceId = GetRowValue(row, "InsuranceId"); } catch { } try { var ssn = GetRowValue(row, "SSN"); if (!string.IsNullOrEmpty(ssn)) { var length = ssn.Length; var appendString = ""; for (int i = 0; i < 9 - length; i++) { appendString += "X"; } registrationEditModel.Ssn = appendString + ssn; } } catch { } registrationEditModel.SendNotification = true; registrationEditModel.AddFreeShipping = true; return(registrationEditModel); }
public bool RegisterCustomer(MassRegistrationEditModel model, long eventId, EventType eventType) { var createdByOrgRoleUser = Mapper.Map <OrganizationRoleUserModel, OrganizationRoleUser>(_sessionContext.UserSession.CurrentOrganizationRole); if (model.Address != null && string.IsNullOrEmpty(model.Address.StreetAddressLine1) && string.IsNullOrEmpty(model.Address.City) && string.IsNullOrEmpty(model.Address.ZipCode)) { var state = _stateRepository.GetStatebyCode(_settings.State) ?? _stateRepository.GetState(_settings.State); model.Address.StreetAddressLine1 = _settings.Address1; model.Address.StreetAddressLine2 = _settings.Address2; model.Address.City = _settings.City; model.Address.StateId = state != null ? state.Id : model.Address.StateId; model.Address.ZipCode = _settings.ZipCode; } var customer = _massRegistrationEditModelFactory.CreateCustomer(model, createdByOrgRoleUser); _customerService.SaveCustomer(customer, createdByOrgRoleUser.Id); var forOrgRoleUser = _orgRoleUserRepository.GetOrganizationRoleUser(customer.CustomerId); var orderables = new List <IOrderable>(); if (model.PackageId > 0) { orderables.Add(_eventPackageRepository.GetByEventAndPackageIds(eventId, model.PackageId)); } if (orderables.IsNullOrEmpty()) { return(false); } var screeningTime = _eventPackageSelectorService.GetScreeningTime(eventId, model.PackageId, null); var slots = _eventSchedulingSlotService.BookSlotTemporarily(model.AppointmentId, screeningTime, model.PackageId, null); if (slots.IsNullOrEmpty()) { throw new InvalidOperationException("Slot is booked by some other customer."); } var eventCustomer = SaveEventCustomer(createdByOrgRoleUser, model.AppointmentId, eventId, customer.CustomerId); ShippingDetail shippingDetail = null; if (model.AddFreeShipping) { var shippingAddress = Mapper.Map <AddressEditModel, Address>(model.Address); shippingDetail = SaveShippingDetail(shippingAddress, createdByOrgRoleUser); } PlaceOrder(forOrgRoleUser, createdByOrgRoleUser, orderables, eventCustomer, null, shippingDetail); if (model.SendNotification) { var eventData = _eventRepository.GetById(eventId); SendNotification(customer, eventData, createdByOrgRoleUser, "/Scheduling/MassRegistration/Create"); } try { _eventSchedulingSlotService.SendEventFillingNotification(eventId, createdByOrgRoleUser.Id); } catch (Exception) { } return(true); }