Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }