private void UpdateCustomerCurrentMedication(CorporateCustomerEditModel model, OrganizationRoleUser createdByOrgRoleUser, Customer customer, IEnumerable <EventCustomer> eventCustomers)
        {
            //Moved CurrentMedication logic to Function
            var ndcMedicationSourcePairs = _customerRegistrationHelper.PrepareNdcPairs(model);

            if (!ndcMedicationSourcePairs.IsNullOrEmpty())
            {
                _currentMedicationRepository.SaveCurrentMedication(customer.CustomerId, ndcMedicationSourcePairs, createdByOrgRoleUser.Id);

                if (!eventCustomers.IsNullOrEmpty())
                {
                    //save EventCustomerCurrentMedication domain for each event customer
                    foreach (var eventCustomer in eventCustomers)
                    {
                        var eventCustomerCurrentMedicationList = ndcMedicationSourcePairs.Select(ndcMedicationSourcePair => new EventCustomerCurrentMedication
                        {
                            EventCustomerId = eventCustomer.Id,
                            IsOtc           = ndcMedicationSourcePair.SecondValue == "o",
                            IsPrescribed    = ndcMedicationSourcePair.SecondValue == "p",
                            NdcId           = ndcMedicationSourcePair.FirstValue
                        }).ToList();
                        _eventCustomerCurrentMedicationRepository.Save(eventCustomer.Id, eventCustomerCurrentMedicationList);
                    }
                }
            }
        }
        private void UpdateCustomerWarmTransfer(CorporateCustomerEditModel model, OrganizationRoleUser createdByOrgRoleUser, Customer customer, ILogger logger)
        {
            if (string.IsNullOrEmpty(model.WarmTransferYear) && string.IsNullOrEmpty(model.WarmTransferAllowed))
            {
                return;
            }

            var  warmTransferYear = Convert.ToInt32(model.WarmTransferYear);
            bool?isWarmTransfer;

            if (model.WarmTransferAllowed.ToLower() == "yes")
            {
                isWarmTransfer = true;
            }
            else if (model.WarmTransferAllowed.ToLower() == "no")
            {
                isWarmTransfer = false;
            }
            else
            {
                isWarmTransfer = null;
            }

            _customerWarmTransferService.Save(customer.CustomerId, warmTransferYear, isWarmTransfer, createdByOrgRoleUser.Id, logger);
        }
        private void SetPcpMailingAddress(PrimaryCarePhysician pcp, CorporateCustomerEditModel model)
        {
            if ((model.PCPMailingAddress1.Length > 0 && model.PCPMailingState.Length > 0 && model.PCPMailingCity.Length > 0 && model.PCPMailingZip.Length > 0))
            {
                bool isAddress = false;
                long addressId = 0;
                if (pcp.MailingAddress != null && (pcp.Address == null || pcp.MailingAddress.Id != pcp.Address.Id))
                {
                    isAddress = IsPcpAddressSame(pcp);
                    if (isAddress == false)
                    {
                        addressId = pcp.MailingAddress.Id;
                    }
                }

                pcp.MailingAddress = new Address(addressId)
                {
                    StreetAddressLine1 = model.PCPMailingAddress1,
                    StreetAddressLine2 = model.PCPMailingAddress2,
                    City      = model.PCPMailingCity,
                    State     = model.PCPMailingState,
                    ZipCode   = model.PCPMailingZip.Length >= 5 ? new ZipCode(model.PCPMailingZip.Substring(0, 5)) : new ZipCode(model.PCPMailingZip.PadLeft(5, '0')),
                    CountryId = (long)CountryCode.UnitedStatesAndCanada
                };
            }
            else
            {
                pcp.MailingAddress = null;
            }
        }
 public void UpdateCustomerPreApprovedPackges(CorporateCustomerEditModel model, long createdByOrgRoleUserId, long customerId)
 {
     if (model.PreApprovedPackageId > 0)
     {
         _preApprovedPackageRepository.SavePreApprovedPackages(customerId, model.PreApprovedPackageId, createdByOrgRoleUserId);
     }
 }
Exemplo n.º 5
0
        public Address CreateAddress(CorporateCustomerEditModel model, string addresstoCreate)
        {
            var address = new Address();

            address.CountryId = (long)CountryCode.UnitedStatesAndCanada;
            address.CityId    = 0;
            address.StateId   = 0;
            if (addresstoCreate.ToLower() == MemberUploadAddress.CustomerAddress.ToString().ToLower())
            {
                address.StreetAddressLine1 = model.Address1;
                address.StreetAddressLine2 = model.Address2;
                address.City    = model.City;
                address.State   = model.State;
                address.ZipCode = model.Zip.Length >= 5 ? new ZipCode(model.Zip.Substring(0, 5)) : new ZipCode(model.Zip.PadLeft(5, '0'));
            }
            else if (addresstoCreate.ToLower() == MemberUploadAddress.PcpAddress.ToString().ToLower())
            {
                address.StreetAddressLine1 = model.PcpAddress1;
                address.StreetAddressLine2 = model.PcpAddress2;
                address.City    = model.PcpCity;
                address.State   = model.PcpState;
                address.ZipCode = model.PcpZip.Length >= 5 ? new ZipCode(model.PcpZip.Substring(0, 5)) : new ZipCode(model.PcpZip.PadLeft(5, '0'));
            }
            else if (addresstoCreate.ToLower() == MemberUploadAddress.PcpMailingAddress.ToString().ToLower())
            {
                address.StreetAddressLine1 = model.PCPMailingAddress1;
                address.StreetAddressLine2 = model.PCPMailingAddress2;
                address.City    = model.PCPMailingCity;
                address.State   = model.PCPMailingState;
                address.ZipCode = model.PCPMailingZip.Length >= 5 ? new ZipCode(model.PCPMailingZip.Substring(0, 5)) : new ZipCode(model.PCPMailingZip.PadLeft(5, '0'));
            }
            return(address);
        }
        private void SetPcpPracticeAddress(PrimaryCarePhysician pcp, CorporateCustomerEditModel model)
        {
            if (model.PcpAddress1.Length > 0 && model.PcpState.Length > 0 && model.PcpCity.Length > 0 && model.PcpZip.Length > 0)
            {
                long addressId = 0;
                if (pcp.Address != null)
                {
                    addressId = pcp.Address.Id;
                }

                pcp.Address = new Address(addressId)
                {
                    StreetAddressLine1 = model.PcpAddress1,
                    StreetAddressLine2 = model.PcpAddress2,
                    City      = model.PcpCity,
                    State     = model.PcpState,
                    ZipCode   = model.PcpZip.Length >= 5 ? new ZipCode(model.PcpZip.Substring(0, 5)) : new ZipCode(model.PcpZip.PadLeft(5, '0')),
                    CountryId = (long)CountryCode.UnitedStatesAndCanada
                };
            }
            else
            {
                pcp.Address = null;
            }
        }
Exemplo n.º 7
0
        private Lab GetLab(CorporateCustomerEditModel model, OrganizationRoleUser createdByOrgRoleUser, IEnumerable <Lab> labs)
        {
            Lab lab = null;

            if (!string.IsNullOrEmpty(model.Lab))
            {
                lab = labs.FirstOrDefault(l => l.Name.Trim().ToLower() == model.Lab.Trim().ToLower());
                if (lab == null)
                {
                    lab = _labRepository.GetByName(model.Lab);
                    if (lab == null)
                    {
                        lab = new Lab
                        {
                            Name     = model.Lab,
                            Alias    = model.Lab,
                            IsActive = true,
                            CreatedByOrgRoleUserId = createdByOrgRoleUser.Id,
                            DateCreated            = DateTime.Now
                        };

                        lab = _labRepository.Save(lab);
                    }
                }
            }

            return(lab);
        }
Exemplo n.º 8
0
        public Customer RegisterCorporateCustomer(Customer customer, CorporateCustomerEditModel model, string tag, OrganizationRoleUser createdByOrgRoleUser, IEnumerable <Language> languages,
                                                  IEnumerable <Lab> labs, StringBuilder sb, long activityTypeId, long?source, out bool isNewCustomer)
        {
            //if (customerWithAcesId != null && customer == null)
            //{
            //    throw new Exception("Aces Id can not be duplicate, Aces Id : " + model.AcesId + " already assigned.");
            //}

            //if (customerWithAcesId != null && customer != null && customerWithAcesId.CustomerId != customer.CustomerId)
            //{
            //    throw new Exception("Aces Id can not be duplicate, Aces Id : " + model.AcesId + " already assigned.");
            //}

            //if (customer == null && (sb != null && sb.ToString() != ""))
            //{
            //    throw new Exception("");
            //}
            //else
            //{
            //    sb = new StringBuilder();
            //}

            var language = GetLanguage(model, createdByOrgRoleUser, languages);
            var lab      = GetLab(model, createdByOrgRoleUser, labs);

            var previousIncorrectPhoneNumberStatus = customer != null && customer.IsIncorrectPhoneNumber;

            var customerOldCellNumber = (customer != null && customer.MobilePhoneNumber != null) ? PhoneNumber.Create(PhoneNumber.ToNumber(customer.MobilePhoneNumber.ToString()), PhoneNumberType.Mobile).ToString() : string.Empty;
            var customerOldHomeNumber = (customer != null && customer.HomePhoneNumber != null) ? PhoneNumber.Create(PhoneNumber.ToNumber(customer.HomePhoneNumber.ToString()), PhoneNumberType.Home).ToString() : string.Empty;

            customer = _massRegistrationEditModelFactory.CreateCustomer(model, tag, createdByOrgRoleUser, customer, language, lab, activityTypeId, source);

            var oldCustomerId = customer.CustomerId;

            var currentIncorrectPhoneNumberStatus = customer.IsIncorrectPhoneNumber;

            _customerService.SaveCustomer(customer, createdByOrgRoleUser.Id);

            isNewCustomer = customer.CustomerId > 0 && oldCustomerId != customer.CustomerId;

            var customerNewCellNumber = (customer.MobilePhoneNumber != null) ? PhoneNumber.Create(PhoneNumber.ToNumber(customer.MobilePhoneNumber.ToString()), PhoneNumberType.Mobile).ToString() : string.Empty;
            var customerNewHomeNumber = (customer.HomePhoneNumber != null) ? PhoneNumber.Create(PhoneNumber.ToNumber(customer.HomePhoneNumber.ToString()), PhoneNumberType.Home).ToString() : string.Empty;

            if (previousIncorrectPhoneNumberStatus && !currentIncorrectPhoneNumberStatus)
            {
                _logger.Info("customer Id: " + customer.CustomerId + " and Old Cell Number: " + customerOldCellNumber + "  New Cell Number: " + customerNewCellNumber);
                _logger.Info("customer Id: " + customer.CustomerId + " and Old Home Number: " + customerOldHomeNumber + "  New Home Number: " + customerNewHomeNumber);

                _customerNotesService.SavePhoneNumberUpdatedMessage(customer.CustomerId, createdByOrgRoleUser.Id);
            }


            //always save eligibility after saving customer , because history is maintained by SaveCustomer/SaveCustomerOnly function.
            //Here Eligibility is updated within function coded below
            _corporateCustomerUploadService.UpdateCustomerData(model, createdByOrgRoleUser, customer, _logger);

            return(customer);
        }
        private bool IsPcpUpdated(PrimaryCarePhysician pcp, CorporateCustomerEditModel model)
        {
            if (!(string.IsNullOrEmpty(model.PcpFirstName) || model.PcpFirstName.Equals(pcp.Name.FirstName, StringComparison.InvariantCultureIgnoreCase)) ||
                !(string.IsNullOrEmpty(model.PcpLastName) || model.PcpLastName.Equals(pcp.Name.LastName, StringComparison.InvariantCultureIgnoreCase)))
            {
                return(true);
            }

            return(false);
        }
Exemplo n.º 10
0
        private void AddressSanitizingInvalidZip(CorporateCustomerEditModel customerEditModel)
        {
            if (!string.IsNullOrEmpty(customerEditModel.State) && customerEditModel.State.Length == 2)
            {
                var stateNameFromStateCode = _stateRepository.GetStatebyCode(customerEditModel.State);
                if (stateNameFromStateCode == null)
                {
                    throw new Exception("Invalid State Name:" + customerEditModel.State);
                }
                else
                {
                    customerEditModel.State = stateNameFromStateCode.Name;
                }
            }

            var customerAddress = _massRegistrationEditModelFactory.CreateAddress(customerEditModel, MemberUploadAddress.CustomerAddress.ToString());

            _addressService.GetAddressSanitizingInvalidZip(customerAddress, customerEditModel, MemberUploadAddress.CustomerAddress.ToString());

            if (customerEditModel.PcpAddress1.Length > 0 && customerEditModel.PcpState.Length > 0 && customerEditModel.PcpCity.Length > 0 && customerEditModel.PcpZip.Length > 0)
            {
                if (!string.IsNullOrEmpty(customerEditModel.PcpState) && customerEditModel.PcpState.Length == 2)
                {
                    var stateNameFromStateCode = _stateRepository.GetStatebyCode(customerEditModel.PcpState);
                    if (stateNameFromStateCode == null)
                    {
                        throw new Exception("Invalid State Name:" + customerEditModel.PcpState);
                    }
                    else
                    {
                        customerEditModel.PcpState = stateNameFromStateCode.Name;
                    }
                }
                var pcpAddress = _massRegistrationEditModelFactory.CreateAddress(customerEditModel, MemberUploadAddress.PcpAddress.ToString());
                _addressService.GetAddressSanitizingInvalidZip(pcpAddress, customerEditModel, MemberUploadAddress.PcpAddress.ToString());
            }
            if ((customerEditModel.PCPMailingAddress1.Length > 0 && customerEditModel.PCPMailingState.Length > 0 && customerEditModel.PCPMailingCity.Length > 0 && customerEditModel.PCPMailingZip.Length > 0))
            {
                if (!string.IsNullOrEmpty(customerEditModel.PCPMailingState) && customerEditModel.PCPMailingState.Length == 2)
                {
                    var stateNameFromStateCode = _stateRepository.GetStatebyCode(customerEditModel.PCPMailingState);
                    if (stateNameFromStateCode == null)
                    {
                        throw new Exception("Invalid State Name:" + customerEditModel.PCPMailingState);
                    }
                    else
                    {
                        customerEditModel.PCPMailingState = stateNameFromStateCode.Name;
                    }
                }
                var pcpMailingAddress = _massRegistrationEditModelFactory.CreateAddress(customerEditModel, MemberUploadAddress.PcpMailingAddress.ToString());
                _addressService.GetAddressSanitizingInvalidZip(pcpMailingAddress, customerEditModel, MemberUploadAddress.PcpMailingAddress.ToString());
            }
        }
Exemplo n.º 11
0
 private void UpdateCorporateMemberUpload(long corportateUploadId, CorporateCustomerEditModel customerEditModel)
 {
     _memberUploadLogRepository.Save(new MemberUploadLog
     {
         CorporateUploadId      = corportateUploadId,
         CustomerId             = customerEditModel.CustomerId,
         IsCustomerZipInvalid   = customerEditModel.IsCustomerZipInvalid,
         IsPCPZipInvalid        = customerEditModel.IsPCPZipInvalid,
         IsPCPMailingZipInvalid = customerEditModel.IsPCPMailingZipInvalid,
         NewInsertedZipIds      = customerEditModel.NewInsertedZipIds,
         NewInsertedCityIds     = customerEditModel.NewInsertedCityIds,
     });
 }
        private void UpdateCustomerTargeted(CorporateCustomerEditModel model, OrganizationRoleUser createdByOrgRoleUser, Customer customer)
        {
            var  forYear    = DateTime.Now.Year;
            bool?isTargeted = null;

            if (!string.IsNullOrEmpty(model.TargetYear))
            {
                forYear    = Convert.ToInt32(model.TargetYear);
                isTargeted = true;
            }

            _customerTargetedService.Save(customer.CustomerId, forYear, isTargeted, createdByOrgRoleUser.Id);
        }
Exemplo n.º 13
0
        private void UpateCustomerPreApprovedTest(CorporateCustomerEditModel model, long createdByOrgRoleUserId, long customerId)
        {
            if (model.PreApprovedTest != null && model.PreApprovedTest.Any())
            {
                var pairs = TestType.A1C.GetNameValuePairs();
                var preApprovedTestIds =
                    pairs.Where(x => model.PreApprovedTest.Contains(x.SecondValue.ToLower())).Select(x => (long)x.FirstValue);

                if (preApprovedTestIds != null && preApprovedTestIds.Any())
                {
                    _preApprovedTestRepository.SavePreApprovedTests(customerId, preApprovedTestIds,
                                                                    createdByOrgRoleUserId);
                }
            }
        }
        private void UpdateCustomerIcdCodes(CorporateCustomerEditModel model, OrganizationRoleUser createdByOrgRoleUser, Customer customer, IEnumerable <EventCustomer> eventCustomers)
        {
            var icdCodes = !model.IcdCodes.IsNullOrEmpty() ? model.IcdCodes.Where(x => !string.IsNullOrEmpty(x)) : null;

            if (!icdCodes.IsNullOrEmpty())
            {
                var icdCodesCollection = _icdCodesRepository.GetIcdByCodeNames(icdCodes).ToList();

                var icdCodesAlreadyInDb = icdCodesCollection.Select(x => x.CodeName);
                var icdCodesToAddinDB   = icdCodes.Where(x => !icdCodesAlreadyInDb.Contains(x));

                if (!icdCodesToAddinDB.IsNullOrEmpty())
                {
                    icdCodesCollection = icdCodesToAddinDB.Select(tempIcdCode => new IcdCode
                    {
                        CodeName             = tempIcdCode,
                        DataRecorderMetaData = new DataRecorderMetaData(createdByOrgRoleUser, DateTime.Now, null),
                        IsActive             = true
                    }).ToList();

                    _icdCodesRepository.Save(icdCodesCollection);

                    icdCodesCollection = _icdCodesRepository.GetIcdByCodeNames(icdCodes).ToList();
                }

                if (!icdCodesCollection.IsNullOrEmpty())
                {
                    var customericdCodes =
                        icdCodesCollection.Select(x =>
                                                  new CustomerIcdCode
                    {
                        CustomerId             = customer.CustomerId,
                        IcdCodeId              = x.Id,
                        DateCreated            = DateTime.Now,
                        IsActive               = true,
                        CreatedByOrgRoleUserId = createdByOrgRoleUser.Id
                    }).ToList();

                    _customerIcdCodesRepository.Save(customericdCodes, customer.CustomerId);

                    UpdateIcdCodesForFutureEvent(eventCustomers, icdCodesCollection);
                }
            }
        }
Exemplo n.º 15
0
        public string CheckAddtionalField(CorporateCustomerEditModel customerEditModel, IEnumerable <AccountAdditionalFieldsEditModel> accountAdditionalFieldEditModel)
        {
            string errorMessage = string.Empty;

            if (!accountAdditionalFieldEditModel.Any() && (!string.IsNullOrEmpty(customerEditModel.AdditionalField1) || !string.IsNullOrEmpty(customerEditModel.AdditionalField2) ||
                                                           !string.IsNullOrEmpty(customerEditModel.AdditionalField3) || !string.IsNullOrEmpty(customerEditModel.AdditionalField4)))
            {
                return(errorMessage = "'Additional Fields'");
            }
            else
            {
                var additionalFieldids = accountAdditionalFieldEditModel.Select(x => x.AdditionalFieldId).ToList();

                if (!string.IsNullOrEmpty(customerEditModel.AdditionalField1))
                {
                    if (!additionalFieldids.Contains((long)AdditionalFieldsEnum.AdditionalField1))
                    {
                        errorMessage = errorMessage + "'Field 1',";
                    }
                }
                if (!string.IsNullOrEmpty(customerEditModel.AdditionalField2))
                {
                    if (!additionalFieldids.Contains((long)AdditionalFieldsEnum.AdditionalField2))
                    {
                        errorMessage = errorMessage + "'Field 2',";
                    }
                }
                if (!string.IsNullOrEmpty(customerEditModel.AdditionalField3))
                {
                    if (!additionalFieldids.Contains((long)AdditionalFieldsEnum.AdditionalField3))
                    {
                        errorMessage = errorMessage + "'Field 3',";
                    }
                }
                if (!string.IsNullOrEmpty(customerEditModel.AdditionalField4))
                {
                    if (!additionalFieldids.Contains((long)AdditionalFieldsEnum.AdditionalField4))
                    {
                        errorMessage = errorMessage + "'Field 4',";
                    }
                }
            }
            return(errorMessage.Trim(','));
        }
        //private void UpateCustomerRequiredTest(CorporateCustomerEditModel model, OrganizationRoleUser createdByOrgRoleUser, Customer customer)
        //{
        //    if (model.RequiredTest != null && model.RequiredTest.Any())
        //    {
        //        var pairs = TestType.A1C.GetNameValuePairs();
        //        var requiredTestIds =
        //            pairs.Where(x => model.RequiredTest.Contains(x.SecondValue.ToLower())).Select(x => (long)x.FirstValue);

        //        if (requiredTestIds != null && requiredTestIds.Any())
        //        {
        //            _requiredTestRepository.SaveRequiredTests(customer.CustomerId, requiredTestIds,
        //                createdByOrgRoleUser.Id, Convert.ToInt32(model.ForYear));
        //        }

        //    }
        //}

        private void UpdateCallQueueCustomerProductType(CorporateCustomerEditModel model, Customer customer, ILogger logger)
        {
            if (!string.IsNullOrWhiteSpace(model.Product) && customer.CustomerId > 0)
            {
                var productTypePairs = ProductType.CHA.GetNameValuePairs();

                var productType = productTypePairs.Where(x => x.SecondValue.ToLower() == model.Product.ToLower()).Select(x => x.FirstValue).First();

                var success = _callQueueCustomerRepository.UpdateCallQueueCustomerProductType(customer.CustomerId, productType);
                if (success)
                {
                    logger.Info("Product updated on Call Queue Customer, CustomerId :" + customer.CustomerId + ", Product Name : " + model.Product);
                }
                else
                {
                    logger.Info("Product not updated on Call Queue Customer, CustomerId :" + customer.CustomerId + ", Product Name : " + model.Product);
                }
            }
        }
        private void UpdateCustomerEligibility(CorporateCustomerEditModel model, OrganizationRoleUser createdByOrgRoleUser, Customer customer, ILogger logger)
        {
            var  forYear = Convert.ToInt32(model.EligibilityYear);
            bool?isEligible;

            if (model.IsEligible.ToLower() == "yes")
            {
                isEligible = true;
            }
            else if (model.IsEligible.ToLower() == "no")
            {
                isEligible = false;
            }
            else
            {
                isEligible = null;
            }

            _customerEligibilityService.Save(customer.CustomerId, forYear, isEligible, createdByOrgRoleUser.Id, logger);
        }
Exemplo n.º 18
0
        private void UpdateNeedVerificationAddress(CorporateCustomerEditModel customerEditModel)
        {
            var addressIds = new List <long>();

            if (customerEditModel.IsCustomerZipInvalid)
            {
                addressIds.Add(customerEditModel.CustomerAddressId);
            }
            if (customerEditModel.IsPCPZipInvalid)
            {
                addressIds.Add(customerEditModel.PCPAddressId);
            }
            if (customerEditModel.IsPCPMailingZipInvalid)
            {
                addressIds.Add(customerEditModel.PCPMailingAddressId);
            }
            if (!addressIds.IsNullOrEmpty())
            {
                _addressRepository.UpdateNeedVerficationbyAddressIds(addressIds);
            }
        }
Exemplo n.º 19
0
        private CorporateCustomerEditModel CreateEditModel(DataRow row)
        {
            try
            {
                CorporateCustomerEditModel customerEditModel = _corporateUploadHelper.GetMemberUploadbyAcesCustomerEditModel(row);
                customerEditModel.MemberUploadSourceId = (long)MemberUploadSource.Aces;
                customerEditModel.PredictedZip         = string.Empty;

                customerEditModel.IsCustomerZipInvalid   = false;
                customerEditModel.IsPCPZipInvalid        = false;
                customerEditModel.IsPCPMailingZipInvalid = false;

                return(customerEditModel);
            }
            catch (Exception ex)
            {
                _logger.Error("Error occurred while converting row in edit model. ");
                _logger.Error("Exception Message :" + ex.Message);
                _logger.Error("Stack Trace :" + ex.StackTrace);
            }
            return(null);
        }
        public void UpdateCustomerData(CorporateCustomerEditModel model, OrganizationRoleUser createdByOrgRoleUser, Customer customer, ILogger logger)
        {
            var eventCustomers = _eventCustomerRepository.GetEventCustomerForFurtureEventsByCustomerId(customer.CustomerId);

            UpdateCustomerCurrentMedication(model, createdByOrgRoleUser, customer, eventCustomers);
            UpdateCustomerPrimaryCarePhysician(model, createdByOrgRoleUser, customer, eventCustomers);
            UpdateCustomerIcdCodes(model, createdByOrgRoleUser, customer, eventCustomers);
            SaveCustomerPredictedZip(customer.CustomerId, model.PredictedZip);

            //UpateCustomerPreApprovedTest(model, createdByOrgRoleUser.Id, customer.CustomerId);
            //UpdateCustomerPreApprovedPackges(model, createdByOrgRoleUser.Id, customer.CustomerId);
            //UpdateCustomerPreApprovedForFutureEvents(eventCustomers, model);

            //if (model.MemberUploadSourceId == null)
            //    UpateCustomerRequiredTest(model, createdByOrgRoleUser, customer);

            UpdateCustomerTargeted(model, createdByOrgRoleUser, customer);
            UpdateCustomerEligibility(model, createdByOrgRoleUser, customer, logger);
            UpdateCustomerWarmTransfer(model, createdByOrgRoleUser, customer, logger);

            UpdateCallQueueCustomerProductType(model, customer, logger);
        }
Exemplo n.º 21
0
        public List <OrderedPair <long, string> > PrepareNdcPairs(CorporateCustomerEditModel model)
        {
            var ndcMedicationSourcePairs = new List <OrderedPair <long, string> >();

            if (model.CurrentMedication != null && model.CurrentMedication.Any())
            {
                var pairs = _ndcRepository.GetByNdcCode(model.CurrentMedication);

                int counter = 0;
                var sources = model.CurrentMedicationSource.ToArray();
                foreach (var medicine in model.CurrentMedication)
                {
                    var topmost = (from p in pairs where p.NdcCode.ToLower() == medicine select p).FirstOrDefault();

                    if (topmost != null)
                    {
                        //ndcIds.Add(topmost.Id);
                        if (model.CurrentMedicationSource != null &&
                            model.CurrentMedicationSource.Count() == model.CurrentMedication.Count())
                        {
                            var ndcMedicationSourcePair = new OrderedPair <long, string>(topmost.Id, sources[counter]);
                            ndcMedicationSourcePairs.Add(ndcMedicationSourcePair);
                        }
                        else
                        {
                            var ndcMedicationSourcePair = new OrderedPair <long, string>(topmost.Id, "");
                            ndcMedicationSourcePairs.Add(ndcMedicationSourcePair);
                        }
                    }

                    counter++;
                }
                return(ndcMedicationSourcePairs);
            }
            return(null);
        }
Exemplo n.º 22
0
        public CorporateCustomerEditModel GetMemberUploadbyAcesCustomerEditModel(DataRow row)
        {
            var editModel = new CorporateCustomerEditModel();

            editModel.MemberId   = GetRowValue(row, MemberUploadbyAcesUploadColumn.MemberID);
            editModel.FirstName  = GetRowValue(row, MemberUploadbyAcesUploadColumn.FirstName);
            editModel.MiddleName = GetRowValue(row, MemberUploadbyAcesUploadColumn.MiddleName);
            editModel.LastName   = GetRowValue(row, MemberUploadbyAcesUploadColumn.LastName);
            editModel.Gender     = GetRowValue(row, MemberUploadbyAcesUploadColumn.Gender);

            var dateofBirth = CovertToDate(GetRowValue(row, MemberUploadbyAcesUploadColumn.Dob));

            editModel.Dob = dateofBirth == null?GetRowValue(row, MemberUploadbyAcesUploadColumn.Dob) : dateofBirth.Value.ToString("MM/dd/yyyy");

            editModel.Email          = GetRowValue(row, MemberUploadbyAcesUploadColumn.Email);
            editModel.AlternateEmail = GetRowValue(row, MemberUploadbyAcesUploadColumn.AlternateEmail);
            editModel.PhoneCell      = GetRowValue(row, MemberUploadbyAcesUploadColumn.PhoneCell);
            editModel.PhoneHome      = GetRowValue(row, MemberUploadbyAcesUploadColumn.PhoneHome);
            editModel.Address1       = GetRowValue(row, MemberUploadbyAcesUploadColumn.Address1);
            editModel.Address2       = GetRowValue(row, MemberUploadbyAcesUploadColumn.Address2);
            editModel.City           = GetRowValue(row, MemberUploadbyAcesUploadColumn.City);
            editModel.State          = GetRowValue(row, MemberUploadbyAcesUploadColumn.State);
            editModel.Zip            = GetRowValue(row, MemberUploadbyAcesUploadColumn.Zip);
            editModel.Hicn           = GetRowValue(row, MemberUploadbyAcesUploadColumn.Hicn);
            editModel.PcpFirstName   = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpFirstName);
            editModel.PcpLastName    = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpLastName);
            editModel.PcpPhone       = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpPhone);
            editModel.PcpFax         = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpFax);
            editModel.PcpEmail       = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpEmail);
            editModel.PcpAddress1    = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpAddress1);
            editModel.PcpAddress2    = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpAddress2);
            editModel.PcpCity        = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpCity);
            editModel.PcpState       = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpState);
            editModel.PcpZip         = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpZip);
            editModel.PcpNpi         = GetRowValue(row, MemberUploadbyAcesUploadColumn.PcpNpi);

            editModel.PreApprovedTest = GetTests(row, MemberUploadbyAcesUploadColumn.PreApprovedTest);

            editModel.IsEligible = GetRowValue(row, MemberUploadbyAcesUploadColumn.IsEligible);
            editModel.TargetYear = GetRowValue(row, MemberUploadbyAcesUploadColumn.TargetYear);
            editModel.Language   = GetRowValue(row, MemberUploadbyAcesUploadColumn.Language);
            editModel.Lab        = GetRowValue(row, MemberUploadbyAcesUploadColumn.Lab);
            editModel.Copay      = GetRowValue(row, MemberUploadbyAcesUploadColumn.Copay);
            editModel.MedicareAdvantagePlanName = GetRowValue(row, MemberUploadbyAcesUploadColumn.MedicareAdvantagePlanName);
            editModel.Lpi       = GetRowValue(row, MemberUploadbyAcesUploadColumn.Lpi);
            editModel.Market    = GetRowValue(row, MemberUploadbyAcesUploadColumn.Market);
            editModel.Mrn       = GetRowValue(row, MemberUploadbyAcesUploadColumn.Mrn);
            editModel.GroupName = GetRowValue(row, MemberUploadbyAcesUploadColumn.GroupName);

            editModel.IcdCodes = GetIcdCodesTests(row, MemberUploadbyAcesUploadColumn.IcdCodes);

            editModel.PreApprovedPackage = GetRowValue(row, MemberUploadbyAcesUploadColumn.PreApprovedPackage);
            editModel.PCPMailingAddress1 = GetRowValue(row, MemberUploadbyAcesUploadColumn.PCPMailingAddress1);
            editModel.PCPMailingAddress2 = GetRowValue(row, MemberUploadbyAcesUploadColumn.PCPMailingAddress2);
            editModel.PCPMailingCity     = GetRowValue(row, MemberUploadbyAcesUploadColumn.PCPMailingCity);
            editModel.PCPMailingState    = GetRowValue(row, MemberUploadbyAcesUploadColumn.PCPMailingState);
            editModel.PCPMailingZip      = GetRowValue(row, MemberUploadbyAcesUploadColumn.PCPMailingZip);

            editModel.CurrentMedication       = GetCurrentMedication(row, MemberUploadbyAcesUploadColumn.CurrentMedication);
            editModel.CurrentMedicationSource = GetCurrentMedication(row, MemberUploadbyAcesUploadColumn.CurrentMedicationSource);

            editModel.AdditionalField1 = GetRowValue(row, MemberUploadbyAcesUploadColumn.AdditionalField1);
            editModel.AdditionalField2 = GetRowValue(row, MemberUploadbyAcesUploadColumn.AdditionalField2);
            editModel.AdditionalField3 = GetRowValue(row, MemberUploadbyAcesUploadColumn.AdditionalField3);
            editModel.AdditionalField4 = GetRowValue(row, MemberUploadbyAcesUploadColumn.AdditionalField4);
            editModel.Activity         = GetRowValue(row, MemberUploadbyAcesUploadColumn.Activity);
            editModel.PredictedZip     = GetRowValue(row, MemberUploadbyAcesUploadColumn.PredictedZip);
            editModel.Mbi = GetRowValue(row, MemberUploadbyAcesUploadColumn.Mbi);

            //editModel.BillingMemberId = GetRowValue(row, MemberUploadbyAcesUploadColumn.BillingMemberId);
            //editModel.BillingMemberPlan = GetRowValue(row, MemberUploadbyAcesUploadColumn.BillingMemberPlan);
            //editModel.BillingMemberPlanYear = ConvertToInt(GetRowValue(row, MemberUploadbyAcesUploadColumn.BillingMemberPlanYear));
            //editModel.WarmTransferAllowed = GetRowValue(row, MemberUploadbyAcesUploadColumn.WarmTransferAllowed);
            //editModel.WarmTransferYear = GetRowValue(row, MemberUploadbyAcesUploadColumn.WarmTransferYear);
            editModel.AcesId          = GetRowValue(row, MemberUploadbyAcesUploadColumn.AcesId);
            editModel.EligibilityYear = GetRowValue(row, MemberUploadbyAcesUploadColumn.EligibilityYear);
            editModel.DNCFlag         = GetRowValue(row, MemberUploadbyAcesUploadColumn.DNO);
            editModel.Product         = GetRowValue(row, MemberUploadbyAcesUploadColumn.ProductNames);

            editModel.ACESClientID = GetRowValue(row, MemberUploadbyAcesUploadColumn.ACESClientID);

            return(editModel);
        }
Exemplo n.º 23
0
        public void CorporateUploadDataRow(CorporateCustomerEditModel customerEditModel, IEnumerable <Language> languages, IEnumerable <Lab> labs,
                                           List <string> customTags, CorporateUploadEditModel corporateModel, IEnumerable <AccountAdditionalFieldsEditModel> accountAdditionalFields,
                                           List <EventCusomerAdjustOrderViewModel> adjustOrderForCustomerEditModel, OrganizationRoleUser createdByOrgRoleUser, long organizationRoleUserId,
                                           List <long> customerList, long?source, StringBuilder sb, long corporateUploadId, out CustomerWithDuplicateAcesModel customerIdWithSameAcesId)
        {
            var    customerWithSameAcesId = new CustomerWithDuplicateAcesModel();
            string errorMessage           = _corporateUploadHelper.CheckAddtionalField(customerEditModel, accountAdditionalFields);

            if (!string.IsNullOrEmpty(errorMessage))
            {
                throw new InvalidOperationException("System will not parse the customer data as " + errorMessage + " is not added for this corporate account.");
            }

            if (!string.IsNullOrEmpty(customerEditModel.PreApprovedPackage))
            {
                var preApprovedPackage = _packageRepository.GetByName(customerEditModel.PreApprovedPackage);
                if (preApprovedPackage == null)
                {
                    throw new InvalidOperationException("Package does not exist");
                }
                customerEditModel.PreApprovedPackageId = preApprovedPackage.Id;
            }

            //Customer customerWithAcesId = null;
            List <Customer> customersWithAcesId = null;

            var isMemberUploadByAces = false;

            isMemberUploadByAces = (source.HasValue && source.Value == (long)MemberUploadSource.Aces);

            if (!string.IsNullOrWhiteSpace(customerEditModel.AcesId))
            {
                customersWithAcesId = _customerRegistrationService.GetCustomersByAcesId(customerEditModel.AcesId);
                //if (!customersWithAcesId.IsNullOrEmpty() && customersWithAcesId.Count() > 1)
                //{
                //    throw new InvalidOperationException("Aces Id can not be duplicate, Aces Id : " + customerEditModel.AcesId + " already assigned.");
                //}

                //customerWithAcesId = customersWithAcesId.IsNullOrEmpty() ? null : customersWithAcesId.First();
            }

            if (customerEditModel.PreApprovedTest != null && customerEditModel.PreApprovedTest.Any())
            {
                var pairs = TestType.A1C.GetNameValuePairs();
                var preApprovedTestExists = pairs.Where(x => customerEditModel.PreApprovedTest.Contains(x.SecondValue.ToLower())).Select(x => x.SecondValue.ToLower());

                var testNotExist = string.Empty;

                if (preApprovedTestExists != null && preApprovedTestExists.Any() && (preApprovedTestExists.Count() != customerEditModel.PreApprovedTest.Count()))
                {
                    var testNotExistInSystem = customerEditModel.PreApprovedTest.Where(x => !preApprovedTestExists.Contains(x.ToLower())).Select(x => x).ToArray();

                    testNotExist = string.Join(",", testNotExistInSystem);
                }
                else if (preApprovedTestExists == null || !preApprovedTestExists.Any())
                {
                    testNotExist = string.Join(",", customerEditModel.PreApprovedTest);
                }

                if (!string.IsNullOrEmpty(testNotExist))
                {
                    throw new InvalidOperationException(testNotExist + " test alias name does not exist in HIP");
                }
            }

            if (string.IsNullOrEmpty(customerEditModel.Activity))
            {
                throw new InvalidOperationException("Activity cannot be blank.");
            }

            if (!isMemberUploadByAces && !(customerEditModel.Activity.ToLower() == UploadActivityType.MailOnly.GetDescription().ToLower() || customerEditModel.Activity.ToLower() == UploadActivityType.OnlyCall.GetDescription().ToLower() ||
                                           customerEditModel.Activity.ToLower() == UploadActivityType.BothMailAndCall.GetDescription().ToLower()))
            {
                throw new InvalidOperationException("Activity value invalid.");
            }

            if (isMemberUploadByAces && !(customerEditModel.Activity.ToLower() == UploadActivityType.MailOnly.GetDescription().ToLower() ||
                                          customerEditModel.Activity.ToLower() == UploadActivityType.None.GetDescription().ToLower() || customerEditModel.Activity.ToLower() == UploadActivityType.BothMailAndCall.GetDescription().ToLower() ||
                                          customerEditModel.Activity.ToLower() == UploadActivityType.DoNotCallDoNotMail.GetDescription().ToLower()))
            {
                throw new InvalidOperationException("Activity value invalid.");
            }

            if (!string.IsNullOrEmpty(customerEditModel.PredictedZip))
            {
                var invalidZipMessage = _customerRegistrationService.ValidateZipCodes(customerEditModel.PredictedZip);
                if (!string.IsNullOrEmpty(invalidZipMessage))
                {
                    throw new InvalidOperationException(invalidZipMessage);
                }
            }

            //if (string.IsNullOrEmpty(customerEditModel.TargetYear))
            //{
            //    throw new InvalidOperationException("Target Year is required");
            //}

            if (!string.IsNullOrEmpty(customerEditModel.TargetYear))
            {
                int targetYear;
                var validTargetYear = int.TryParse(customerEditModel.TargetYear, out targetYear);
                if (!validTargetYear || targetYear < DateTime.Now.Year || targetYear > (DateTime.Now.Year + 2))
                {
                    throw new InvalidOperationException("Invalid Target Year");
                }
            }

            if (!isMemberUploadByAces && !string.IsNullOrEmpty(customerEditModel.Email) && !IsValidEmailAddress(customerEditModel.Email))
            {
                throw new InvalidOperationException("Invalid Customer Email Address.");
            }

            if (!isMemberUploadByAces && !string.IsNullOrEmpty(customerEditModel.AlternateEmail) && !IsValidEmailAddress(customerEditModel.AlternateEmail))
            {
                throw new InvalidOperationException("Invalid Customer Alternate Email Address.");
            }

            if (!isMemberUploadByAces && !string.IsNullOrEmpty(customerEditModel.PcpEmail) && !IsValidEmailAddress(customerEditModel.PcpEmail))
            {
                throw new InvalidOperationException("Invalid PCP Email Address.");
            }

            if (!isMemberUploadByAces)
            {
                if ((!string.IsNullOrEmpty(customerEditModel.BillingMemberId) || !string.IsNullOrEmpty(customerEditModel.BillingMemberPlan)) && (customerEditModel.BillingMemberPlanYear == null || customerEditModel.BillingMemberPlanYear == 0))
                {
                    throw new InvalidOperationException("Billing Year is required");
                }

                if (customerEditModel.BillingMemberPlanYear.HasValue && customerEditModel.BillingMemberPlanYear.Value > 0 && string.IsNullOrEmpty(customerEditModel.BillingMemberId) && string.IsNullOrEmpty(customerEditModel.BillingMemberPlan))
                {
                    throw new InvalidOperationException("Billing MemberID or Billing Plan Name or both is required");
                }

                if (!string.IsNullOrEmpty(customerEditModel.WarmTransferAllowed) && (customerEditModel.WarmTransferAllowed.ToLower() != "yes" && customerEditModel.WarmTransferAllowed.ToLower() != "no"))
                {
                    throw new InvalidOperationException("Invalid WarmTransfer Allowed Value");
                }

                if (!string.IsNullOrEmpty(customerEditModel.WarmTransferAllowed) && string.IsNullOrEmpty(customerEditModel.WarmTransferYear))
                {
                    throw new InvalidOperationException("WarmTransfer Year is required");
                }
                if (!string.IsNullOrEmpty(customerEditModel.WarmTransferYear))
                {
                    int warmTransferYear;
                    var validWarmTransferYear = int.TryParse(customerEditModel.WarmTransferYear, out warmTransferYear);
                    if (!validWarmTransferYear || warmTransferYear < DateTime.Now.Year || warmTransferYear > (DateTime.Now.Year + 2))
                    {
                        throw new InvalidOperationException("Invalid WarmTransfer Year");
                    }
                }

                //if (customerEditModel.RequiredTest != null && customerEditModel.RequiredTest.Any())
                //{
                //    var pairs = TestType.A1C.GetNameValuePairs();
                //    var requiredTestExists = pairs.Where(x => customerEditModel.RequiredTest.Contains(x.SecondValue.ToLower())).Select(x => x.SecondValue.ToLower());

                //    var testNotExist = string.Empty;

                //    if (requiredTestExists != null && requiredTestExists.Any() && (requiredTestExists.Count() != customerEditModel.RequiredTest.Count()))
                //    {
                //        var testNotExistInSystem = customerEditModel.RequiredTest.Where(x => !requiredTestExists.Contains(x.ToLower())).Select(x => x).ToArray();

                //        testNotExist = string.Join(",", testNotExistInSystem);
                //    }
                //    else if (requiredTestExists == null || !requiredTestExists.Any())
                //    {
                //        testNotExist = string.Join(",", customerEditModel.RequiredTest);
                //    }

                //    if (!string.IsNullOrEmpty(testNotExist))
                //        throw new InvalidOperationException(testNotExist + " test alias name does not exist in HIP (Required Test)");

                //    if (string.IsNullOrEmpty(customerEditModel.ForYear))
                //    {
                //        throw new InvalidOperationException("For Year is required");
                //    }
                //    int forYear;
                //    var validforYear = int.TryParse(customerEditModel.ForYear, out forYear);
                //    if (!validforYear || forYear < DateTime.Now.Year || forYear > (DateTime.Now.Year + 2))
                //    {
                //        throw new InvalidOperationException("Invalid For Year");
                //    }
                //}
            }

            if (string.IsNullOrEmpty(customerEditModel.EligibilityYear))
            {
                throw new InvalidOperationException("Eligibility Year is required");
            }

            int eligibilityYear;
            var validEligibilityYear = int.TryParse(customerEditModel.EligibilityYear, out eligibilityYear);

            if (!validEligibilityYear || eligibilityYear < DateTime.Now.Year || eligibilityYear > (DateTime.Now.Year + 2))
            {
                throw new InvalidOperationException("Invalid Eligibility Year");
            }

            var activityPairs = UploadActivityType.MailOnly.GetNameValuePairs();
            var activityId    = activityPairs.First(x => customerEditModel.Activity.ToLower() == x.SecondValue.ToLower()).FirstValue;

            bool isNewCustomer = false;

            DateTime?dob = null;

            if (!string.IsNullOrEmpty(customerEditModel.Dob))
            {
                try
                {
                    dob = Convert.ToDateTime(customerEditModel.Dob);
                }
                catch (Exception ex)
                {
                    throw new Exception("DOB is not in correct format. Please Provide in MM/DD/YYYY", ex);
                }
            }

            if (isMemberUploadByAces)
            {
                if (string.IsNullOrEmpty(customerEditModel.Product))
                {
                    throw new InvalidOperationException("Product Type is required");
                }

                if (!string.IsNullOrEmpty(customerEditModel.Product))
                {
                    var productTypePairs = ProductType.CHA.GetNameValuePairs();

                    if (!productTypePairs.Any(x => x.SecondValue.ToLower() == customerEditModel.Product.ToLower()))
                    {
                        throw new InvalidOperationException("Invalid Product Type");
                    }
                }

                if (string.IsNullOrEmpty(customerEditModel.DNCFlag))
                {
                    throw new InvalidOperationException("DNC is required");
                }
                if (!string.IsNullOrEmpty(customerEditModel.DNCFlag))
                {
                    if (customerEditModel.DNCFlag.Trim() == "1")
                    {
                        customerEditModel.DNCFlag = "yes";
                    }
                    else if (customerEditModel.DNCFlag.Trim() == "0")
                    {
                        customerEditModel.DNCFlag = "no";
                    }
                    else
                    {
                        throw new InvalidOperationException("Invalid DNC, Only 0/1 is accepted.");
                    }
                }
            }
            var customer = _customerRepository.GetCustomerForCorporate(customerEditModel.FirstName, customerEditModel.MiddleName, customerEditModel.LastName,
                                                                       customerEditModel.Email, PhoneNumber.ToNumber(customerEditModel.PhoneHome), PhoneNumber.ToNumber(customerEditModel.PhoneCell),
                                                                       dob, corporateModel == null ? string.Empty : corporateModel.Tag, sb);

            if (customer == null && (sb != null && sb.ToString() != ""))
            {
                throw new Exception("");
            }
            else
            {
                sb = new StringBuilder();
            }

            //IEnumerable<EventCustomer> eventCustomers = null;

            //if (customer != null && customer.CustomerId > 0)
            //{
            //    eventCustomers = _eventCustomerPreApprovedTestService.GetFutureEventCustomers(customer.CustomerId);
            //}

            if (string.IsNullOrWhiteSpace(customerEditModel.State) || string.IsNullOrWhiteSpace(customerEditModel.City) || string.IsNullOrWhiteSpace(customerEditModel.Zip))
            {
                var addressErrorMessage = "";
                if (string.IsNullOrWhiteSpace(customerEditModel.State))
                {
                    addressErrorMessage = addressErrorMessage + "State";
                }

                if (string.IsNullOrWhiteSpace(customerEditModel.City))
                {
                    addressErrorMessage = string.IsNullOrWhiteSpace(addressErrorMessage) ? "City" : addressErrorMessage + ", City";
                }

                if (string.IsNullOrWhiteSpace(customerEditModel.Zip))
                {
                    addressErrorMessage = string.IsNullOrWhiteSpace(addressErrorMessage) ? "Zip" : addressErrorMessage + ", Zip";
                }

                addressErrorMessage = addressErrorMessage + " is required.";

                throw new Exception(addressErrorMessage);
            }

            AddressSanitizingInvalidZip(customerEditModel);

            if (customer != null && !customersWithAcesId.IsNullOrEmpty())
            {
                customersWithAcesId = customersWithAcesId.Where(x => x.CustomerId != customer.CustomerId).ToList();
            }

            if (!customersWithAcesId.IsNullOrEmpty())
            {
                customersWithAcesId.ForEach(x => x.AcesId = "");
            }

            using (var scope = new TransactionScope())
            {
                if (!customersWithAcesId.IsNullOrEmpty())
                {
                    foreach (var member in customersWithAcesId)
                    {
                        _customerService.SaveCustomerOnly(member, organizationRoleUserId);
                    }

                    customerWithSameAcesId.AcesId     = customerEditModel.AcesId;
                    customerWithSameAcesId.CustomerId = customer != null ? customer.CustomerId : 0;
                    customerWithSameAcesId.CustomersWithSameAcesId = string.Join(",", customersWithAcesId.Select(x => x.CustomerId));
                }

                var updatedCustomer = _customerRegistrationService.RegisterCorporateCustomer(customer, customerEditModel, corporateModel == null ? string.Empty : corporateModel.Tag,
                                                                                             createdByOrgRoleUser, languages, labs, sb, activityId, source, out isNewCustomer);

                if (customTags != null && customTags.Any() && updatedCustomer != null)
                {
                    foreach (var customTag in customTags)
                    {
                        _corporateCustomerCustomTagService.Save(new CorporateCustomerCustomTag
                        {
                            CustomerId           = updatedCustomer.CustomerId,
                            IsActive             = true,
                            Tag                  = customTag,
                            DataRecorderMetaData = new DataRecorderMetaData(new OrganizationRoleUser(organizationRoleUserId), DateTime.Now, null)
                        });
                    }
                }

                customerEditModel.CustomerId = updatedCustomer.CustomerId;

                //if (!eventCustomers.IsNullOrEmpty())
                //{
                //    var list = _eventCustomerPreApprovedTestService.MarkcustomerForAdjustOrder(customerEditModel, eventCustomers, createdByOrgRoleUser, updatedCustomer, corporateModel.UploadCorporateId);

                //    if (!list.IsNullOrEmpty())
                //        adjustOrderForCustomerEditModel = adjustOrderForCustomerEditModel.Concat(list).ToList();
                //}

                scope.Complete();
            }

            UpdateNeedVerificationAddress(customerEditModel);

            if (isNewCustomer && customerList != null)
            {
                customerList.Add(customerEditModel.CustomerId);
            }

            UpdateCorporateMemberUpload(corporateUploadId, customerEditModel);

            customerIdWithSameAcesId = customerWithSameAcesId;
        }
Exemplo n.º 24
0
        public Customer CreateCustomer(CorporateCustomerEditModel model, string tag, OrganizationRoleUser createdByOrgRoleUser, Customer customer, Language language, Lab lab, long activityTypeId, long?source)
        {
            if (customer == null)
            {
                customer = new Customer
                {
                    Address = new Address()
                }
            }
            ;

            customer.InsuranceId = model.MemberId;
            customer.Name        = new Name
            {
                FirstName  = model.FirstName,
                MiddleName = model.MiddleName,
                LastName   = model.LastName
            };
            if (!string.IsNullOrEmpty(model.Gender))
            {
                customer.Gender = (Gender)System.Enum.Parse(typeof(Gender), model.Gender, true);
            }

            if (!string.IsNullOrEmpty(model.Dob))
            {
                customer.DateOfBirth = Convert.ToDateTime(model.Dob);
            }

            if (customer.CustomerId <= 0)
            {
                if (!string.IsNullOrEmpty(model.Email) || !string.IsNullOrEmpty(model.AlternateEmail))
                {
                    customer.EnableEmail = true;
                }
            }
            else if (string.IsNullOrEmpty(customer.Email.ToString()) && string.IsNullOrEmpty(customer.AlternateEmail.ToString()))
            {
                if (string.IsNullOrEmpty(model.Email) && string.IsNullOrEmpty(model.AlternateEmail))
                {
                    customer.EnableEmail = false;
                }
                else
                {
                    customer.EnableEmail = true;
                }
            }

            if (!string.IsNullOrEmpty(model.Email))
            {
                //string[] emailSplitUp = model.Email.Split(new[] { '@' });
                customer.Email = new Email(model.Email); //{ Address = emailSplitUp[0], DomainName = emailSplitUp[1] };
            }
            if (!string.IsNullOrEmpty(model.AlternateEmail))
            {
                //string[] emailSplitUp = model.AlternateEmail.Split(new[] { '@' });
                customer.AlternateEmail = new Email(model.AlternateEmail);// { Address = emailSplitUp[0], DomainName = emailSplitUp[1] };
            }

            string mobilePhoneNumber = PhoneNumber.Create(PhoneNumber.ToNumber(model.PhoneCell), PhoneNumberType.Mobile).ToString();
            string homePhoneNumber   = PhoneNumber.Create(PhoneNumber.ToNumber(model.PhoneHome), PhoneNumberType.Home).ToString();

            if ((customer.MobilePhoneNumber != null && PhoneNumber.Create(PhoneNumber.ToNumber(customer.MobilePhoneNumber.ToString()), PhoneNumberType.Mobile).ToString() != mobilePhoneNumber) ||
                (customer.HomePhoneNumber != null && PhoneNumber.Create(PhoneNumber.ToNumber(customer.HomePhoneNumber.ToString()), PhoneNumberType.Home).ToString() != homePhoneNumber))
            {
                customer.IsIncorrectPhoneNumber         = false;
                customer.IncorrectPhoneNumberMarkedDate = null;
            }

            if (!string.IsNullOrEmpty(model.PhoneCell))
            {
                customer.MobilePhoneNumber = PhoneNumber.Create(PhoneNumber.ToNumber(model.PhoneCell), PhoneNumberType.Mobile);
            }

            if (!string.IsNullOrEmpty(model.PhoneHome))
            {
                customer.HomePhoneNumber = PhoneNumber.Create(PhoneNumber.ToNumber(model.PhoneHome), PhoneNumberType.Mobile);
            }

            customer.Address.CountryId          = (long)CountryCode.UnitedStatesAndCanada;
            customer.Address.StreetAddressLine1 = model.Address1;
            customer.Address.StreetAddressLine2 = model.Address2;
            customer.Address.City    = model.City;
            customer.Address.CityId  = 0;
            customer.Address.State   = model.State;
            customer.Address.StateId = 0;
            customer.Address.ZipCode = new ZipCode(model.Zip);

            if (!string.IsNullOrEmpty(model.Hicn))
            {
                customer.Hicn = model.Hicn;
            }

            if (!string.IsNullOrEmpty(model.Mbi))
            {
                customer.Mbi = model.Mbi;
            }

            customer.Tag = tag;

            if (!((source.HasValue && source.Value == (long)MemberUploadSource.Aces) && customer.ActivityTypeIsManual))
            {
                customer.ActivityId           = activityTypeId;
                customer.ActivityTypeIsManual = true;
            }


            if (customer.UserLogin == null)
            {
                customer.UserLogin = new UserLogin
                {
                    UserName = GenerateUniqueUserName(model.FirstName + "." + model.LastName),
                    Password = GenerateUniquePassword(),
                    IsSecurityQuestionVerified = false,
                    UserVerified = false
                };
            }

            //if (model.IsEligible.ToLower() == "yes")
            //    customer.IsEligible = true;
            //else if (model.IsEligible.ToLower() == "no")
            //    customer.IsEligible = false;
            //else
            //    customer.IsEligible = null;

            if (!string.IsNullOrEmpty(model.Language))
            {
                if (language != null)
                {
                    customer.LanguageId = language.Id;
                }
            }

            if (!string.IsNullOrEmpty(model.Lab))
            {
                if (lab != null)
                {
                    customer.LabId = lab.Id;
                }
            }

            customer.AddedByRoleId             = createdByOrgRoleUser.RoleId;
            customer.Copay                     = model.Copay;
            customer.MedicareAdvantagePlanName = model.MedicareAdvantagePlanName;

            customer.Lpi       = model.Lpi;
            customer.Market    = model.Market;
            customer.Mrn       = model.Mrn;
            customer.GroupName = model.GroupName;

            customer.AdditionalField1 = model.AdditionalField1;
            customer.AdditionalField2 = model.AdditionalField2;
            customer.AdditionalField3 = model.AdditionalField3;
            customer.AdditionalField4 = model.AdditionalField4;

            if (!(source.HasValue && source.Value == (long)MemberUploadSource.Aces))
            {
                if ((customer.CustomerId <= 0 || customer.BillingMemberPlanYear == model.BillingMemberPlanYear ||
                     (!string.IsNullOrEmpty(model.BillingMemberId) || !string.IsNullOrEmpty(model.BillingMemberPlan))))
                {
                    customer.BillingMemberId       = model.BillingMemberId;
                    customer.BillingMemberPlan     = model.BillingMemberPlan;
                    customer.BillingMemberPlanYear = model.BillingMemberPlanYear;
                }
            }

            if (!string.IsNullOrWhiteSpace(model.AcesId))
            {
                customer.AcesId = model.AcesId;
            }

            //if (model.MemberUploadSourceId.HasValue && model.MemberUploadSourceId == (long)MemberUploadSource.Aces)
            customer.MemberUploadSourceId = model.MemberUploadSourceId;

            if (source.HasValue && source.Value == (long)MemberUploadSource.Aces)
            {
                if (model.DNCFlag.ToLower() == "yes")
                {
                    customer.DoNotContactUpdateSource = (long)DoNotContactSource.CIM;
                    customer.DoNotContactUpdateDate   = DateTime.Now;
                    customer.DoNotContactTypeId       = (long)DoNotContactType.DoNotContact;
                }
                else if (model.DNCFlag.ToLower() == "no")
                {
                    customer.DoNotContactUpdateSource = (long?)null;
                    customer.DoNotContactUpdateDate   = (DateTime?)null;
                    customer.DoNotContactTypeId       = (long?)null;
                    customer.DoNotContactReasonId     = (long?)null;
                }

                var productTypePairs = ProductType.CHA.GetNameValuePairs();
                customer.ProductTypeId = productTypePairs.First(x => x.SecondValue.ToLower() == model.Product.ToLower()).FirstValue;

                customer.AcesClientId = model.ACESClientID;
            }

            return(customer);
        }
        private void UpdateCustomerPrimaryCarePhysician(CorporateCustomerEditModel model, OrganizationRoleUser createdByOrgRoleUser, Customer customer, IEnumerable <EventCustomer> eventCustomers)
        {
            if (!string.IsNullOrEmpty(model.PcpFirstName) || !string.IsNullOrEmpty(model.PcpLastName))
            {
                var pcp = _primaryCarePhysicianRepository.Get(customer.CustomerId);

                var ispcpUpdated = pcp != null && IsPcpUpdated(pcp, model);

                pcp = ispcpUpdated ? null : pcp;

                if (pcp == null)
                {
                    pcp = new PrimaryCarePhysician
                    {
                        CustomerId           = customer.CustomerId,
                        DataRecorderMetaData = new DataRecorderMetaData(createdByOrgRoleUser.Id, DateTime.Now, null)
                    };
                }
                else
                {
                    pcp.DataRecorderMetaData.DataRecorderModifier = new OrganizationRoleUser(createdByOrgRoleUser.Id);
                    pcp.DataRecorderMetaData.DateModified         = DateTime.Now;
                }

                pcp.IsPcpAddressVerified = null;
                pcp.PcpAddressVerifiedBy = null;
                pcp.PcpAddressVerifiedOn = null;
                pcp.Source = (long)CustomerPcpUpdateSource.CorporateUpload;

                pcp.Name    = new Name(model.PcpFirstName, "", model.PcpLastName);
                pcp.Fax     = PhoneNumber.Create(PhoneNumber.ToNumber(model.PcpFax), PhoneNumberType.Unknown);
                pcp.Primary = PhoneNumber.Create(PhoneNumber.ToNumber(model.PcpPhone), PhoneNumberType.Office);
                if (!string.IsNullOrEmpty(model.PcpEmail))
                {
                    pcp.Email = new Email(model.PcpEmail);
                }

                pcp.Npi = model.PcpNpi;
                pcp.PhysicianMasterId = null;

                SetPcpPracticeAddress(pcp, model);
                SetPcpMailingAddress(pcp, model);

                if (IsPcpAddressSame(pcp))
                {
                    pcp.MailingAddress = null;
                }

                pcp.IsActive = true;

                pcp = _primaryCarePhysicianRepository.Save(pcp);

                if (pcp != null)
                {
                    model.CustomerAddressId   = customer.Address != null ? customer.Address.Id : 0;
                    model.PCPAddressId        = pcp.Address != null ? pcp.Address.Id : 0;
                    model.PCPMailingAddressId = pcp.MailingAddress != null ? pcp.MailingAddress.Id : 0;
                }

                if (ispcpUpdated)
                {
                    foreach (var eventCustomer in eventCustomers)
                    {
                        _eventCustomerPrimaryCarePhysicianRepository.Save(new EventCustomerPrimaryCarePhysician
                        {
                            EventCustomerId        = eventCustomer.Id,
                            IsPcpAddressVerified   = false,
                            PcpAddressVerifiedBy   = createdByOrgRoleUser.Id,
                            PcpAddressVerifiedOn   = DateTime.Now,
                            PrimaryCarePhysicianId = pcp.Id
                        });
                    }
                }
            }
        }
Exemplo n.º 26
0
        public Address GetAddressSanitizingInvalidZip(Address addressToSave, CorporateCustomerEditModel model, string addressTobe)
        {
            bool needVerification = false;
            long newZipId         = 0;
            long newCityId        = 0;

            try
            {
                addressToSave = GetSanitizeAddress(addressToSave);
            }
            catch (InvalidAddressException)
            {
                if (addressToSave.ZipCode != null && !string.IsNullOrEmpty(addressToSave.ZipCode.Zip) && !string.IsNullOrEmpty(addressToSave.City) && addressToSave.StateId > 0)
                {
                    State state;
                    if (addressToSave.StateId < 1)
                    {
                        if (!string.IsNullOrEmpty(addressToSave.State))
                        {
                            state = _stateRepository.GetState(addressToSave.State);
                        }
                        else
                        {
                            state = _stateRepository.GetStatebyCode(addressToSave.StateCode);
                        }

                        addressToSave.StateId = state.Id;
                    }
                    else
                    {
                        state = _stateRepository.GetState(addressToSave.StateId);
                    }

                    if (addressToSave.CityId < 1)
                    {
                        var city = _cityRepository.GetCityByStateAndName(addressToSave.StateId, addressToSave.City);
                        if (city == null)
                        {
                            city = _cityRepository.Save(new City()
                            {
                                Name = addressToSave.City.Trim(), StateId = state.Id
                            });
                            newCityId = city != null ? city.Id : 0;
                        }

                        addressToSave.CityId = city.Id;
                    }

                    var zipData = _zipDataRepository.GetZipDataByZipCodeCity(addressToSave.ZipCode.Zip, addressToSave.City);
                    if (zipData != null)
                    {
                        addressToSave.CityId      = addressToSave.CityId;
                        addressToSave.City        = zipData.City;
                        addressToSave.ZipCode.Zip = zipData.ZipCode;
                    }

                    newZipId = SaveNewZipCode(zipData, addressToSave.CityId, addressToSave.ZipCode.Zip);

                    addressToSave    = GetSanitizeAddress(addressToSave);
                    needVerification = true;
                }
                else
                {
                    throw;
                }
            }
            if (needVerification)
            {
                if (addressTobe.ToLower() == MemberUploadAddress.CustomerAddress.ToString().ToLower())
                {
                    model.IsCustomerZipInvalid = true;
                }
                else if (addressTobe.ToLower() == MemberUploadAddress.PcpAddress.ToString().ToLower())
                {
                    model.IsPCPZipInvalid = true;
                }
                else if (addressTobe.ToLower() == MemberUploadAddress.PcpMailingAddress.ToString().ToLower())
                {
                    model.IsPCPMailingZipInvalid = true;
                }
                if (newZipId > 0)
                {
                    if (model.NewInsertedZipIds.IsNullOrEmpty())
                    {
                        model.NewInsertedZipIds = newZipId.ToString();
                    }
                    else
                    {
                        model.NewInsertedZipIds += "," + newZipId.ToString();
                    }
                }
                if (newCityId > 0)
                {
                    if (model.NewInsertedCityIds.IsNullOrEmpty())
                    {
                        model.NewInsertedCityIds = newCityId.ToString();
                    }
                    else
                    {
                        model.NewInsertedCityIds += "," + newCityId.ToString();
                    }
                }
            }
            return(addressToSave);
        }
        public void UpdateCustomerPreApprovedForFutureEvents(IEnumerable <EventCustomer> eventCustomers, CorporateCustomerEditModel customerEditModel)
        {
            if (!eventCustomers.IsNullOrEmpty())
            {
                var pairs = TestType.A1C.GetNameValuePairs();

                var preApprovedTestIds = customerEditModel.PreApprovedTest.IsNullOrEmpty() ? new long[0] : pairs.Where(x => customerEditModel.PreApprovedTest.Contains(x.SecondValue.ToLower())).Select(x => (long)x.FirstValue).ToArray();

                foreach (var eventCustomer in eventCustomers)
                {
                    if (!preApprovedTestIds.IsNullOrEmpty())
                    {
                        preApprovedTestIds = _corporateUploadHelper.RemoveFocFromPreApprovedTest(preApprovedTestIds.ToList()).ToArray();

                        _eventCustomerPreApprovedTestRepository.Save(eventCustomer.Id, preApprovedTestIds);
                    }

                    if (customerEditModel.PreApprovedPackageId > 0)
                    {
                        var preApprovedPacakgeTests = _packageTestRepository.GetbyPackageId(customerEditModel.PreApprovedPackageId);

                        if (preApprovedPacakgeTests != null && preApprovedPacakgeTests.Any())
                        {
                            _eventCustomerPreApprovedPackageTestRepository.Save(eventCustomer.Id, customerEditModel.PreApprovedPackageId, preApprovedPacakgeTests.Select(x => x.TestId));
                        }
                    }
                }
            }
        }
Exemplo n.º 28
0
        public MemberUploadbyAcesFailedCustomerModel Create(CorporateCustomerEditModel model)
        {
            return(new MemberUploadbyAcesFailedCustomerModel
            {
                Activity = model.Activity,
                AdditionalField1 = model.AdditionalField1,
                AdditionalField2 = model.AdditionalField2,
                AdditionalField3 = model.AdditionalField3,
                AdditionalField4 = model.AdditionalField4,
                Address1 = model.Address1,
                Address2 = model.Address2,
                AlternateEmail = model.AlternateEmail,

                City = model.City,
                Copay = model.Copay,
                CurrentMedication = model.CurrentMedication.IsNullOrEmpty() ? string.Empty : string.Join(",", model.CurrentMedication),
                CurrentMedicationSource = model.CurrentMedicationSource.IsNullOrEmpty() ? string.Empty : string.Join(",", model.CurrentMedicationSource),
                Dob = model.Dob,
                Email = model.Email,
                ErrorMessage = model.ErrorMessage,
                FirstName = model.FirstName,
                Gender = model.Gender,
                GroupName = model.GroupName,
                Hicn = model.Hicn,
                IcdCodes = model.IcdCodes.IsNullOrEmpty() ? string.Empty : string.Join(",", model.IcdCodes),
                IsEligible = model.IsEligible,
                Lab = model.Lab,
                Language = model.Language,
                LastName = model.LastName,
                Lpi = model.Lpi,
                Market = model.Market,
                Mbi = model.Mbi,
                MedicareAdvantagePlanName = model.MedicareAdvantagePlanName,
                MemberId = model.MemberId,
                MemberUploadSourceId = model.MemberUploadSourceId,
                MiddleName = model.MiddleName,
                Mrn = model.Mrn,
                PcpAddress1 = model.PcpAddress1,
                PcpAddress2 = model.PcpAddress2,
                PcpCity = model.PcpCity,
                PcpEmail = model.PcpEmail,
                PcpFax = model.PcpFax,
                PcpFirstName = model.PcpFirstName,
                PcpLastName = model.PcpLastName,
                PCPMailingAddress1 = model.PCPMailingAddress1,
                PCPMailingAddress2 = model.PCPMailingAddress2,
                PCPMailingCity = model.PCPMailingCity,
                PCPMailingState = model.PCPMailingState,
                PCPMailingZip = model.PCPMailingZip,
                PcpNpi = model.PcpNpi,
                PcpPhone = model.PcpPhone,
                PcpState = model.PcpState,
                PcpZip = model.PcpZip,
                PhoneCell = model.PhoneCell,
                PhoneHome = model.PhoneHome,
                PreApprovedPackage = model.PreApprovedPackage,
                PreApprovedPackageId = model.PreApprovedPackageId,
                PreApprovedTest = model.PreApprovedTest.IsNullOrEmpty() ? string.Empty : string.Join(",", model.PreApprovedTest),
                PredictedZip = model.PredictedZip,
                State = model.State,
                TargetYear = model.TargetYear,
                Zip = model.Zip,
                AcesId = model.AcesId,
                EligibilityYear = model.EligibilityYear,
                //BillingMemberId = model.BillingMemberId,
                //BillingMemberPlan = model.BillingMemberPlan,
                //BillingMemberPlanYear = model.BillingMemberPlanYear,
                //WarmTransferAllowed = model.WarmTransferAllowed,
                //WarmTransferYear = model.WarmTransferYear,
            });
        }
Exemplo n.º 29
0
        public IEnumerable <EventCusomerAdjustOrderViewModel> MarkcustomerForAdjustOrder(CorporateCustomerEditModel model, IEnumerable <EventCustomer> eventCustomers, long createdByOrgRoleUserId, long customerId, long?corporateUploadId)
        {
            var pairs = TestType.A1C.GetNameValuePairs();

            var preApprovedTestIds = model.PreApprovedTest.IsNullOrEmpty() ? new long[0] : pairs.Where(x => model.PreApprovedTest.Contains(x.SecondValue.ToLower())).Select(x => (long)x.FirstValue).ToArray();

            preApprovedTestIds = _corporateUploadHelper.RemoveFocFromPreApprovedTest(preApprovedTestIds.ToList()).ToArray();

            var eventIds = eventCustomers.Select(x => x.EventId);

            var events = ((IUniqueItemRepository <Event>)_eventRepository).GetByIds(eventIds);

            var orders = _orderRepository.GetAllOrdersByEventCustomerIds(eventCustomers.Select(x => x.Id));

            var orderIds = orders.Select(o => o.Id).ToArray();

            var orderEventPackageIdPairs = _eventPackageRepository.GetEventPackageIdsForOrder(orderIds);                // orderId, EventPackaegId
            var eventPacakageTestIds     = _eventPackageRepository.GetOrderIdEventPackageTestIdPairsForOrder(orderIds); //orderId, TestId(package test)
            var orderIdTestIdPairs       = _eventTestRepository.GetOrderIdTestIdPairsForOrders(orderIds);               // orderId, TestId

            var eventPackageIds = orderEventPackageIdPairs.Select(pair => pair.SecondValue).ToArray();

            var eventPackages = _eventPackageRepository.GetByIds(eventPackageIds).ToArray();

            var list = new List <EventCusomerAdjustOrderViewModel>();

            foreach (var eventCustomer in eventCustomers)
            {
                var order = orders.FirstOrDefault(x => x.CustomerId == eventCustomer.CustomerId && x.EventId == eventCustomer.EventId);

                if (order == null)
                {
                    continue;
                }

                var theEvent = events.First(s => s.Id == eventCustomer.EventId);

                var eventPackagePair          = orderEventPackageIdPairs.FirstOrDefault(x => x.FirstValue == order.Id);
                var preApprovedPackageUpdated = IsPreApprovedPackageUpdated(eventPackagePair, eventPackages, order, model.PreApprovedPackageId);
                var testIdInPackage           = new List <long>();
                if (eventPackagePair != null)
                {
                    testIdInPackage = eventPacakageTestIds.Where(x => x.FirstValue == eventPackagePair.FirstValue).Select(s => s.SecondValue).ToList();
                }

                var preApprovedTestNotInOrder = PreApprovedTestUpdated(orderIdTestIdPairs, order, preApprovedTestIds, testIdInPackage);
                var preApprovedTestToUpdate   = string.Empty;

                if (preApprovedTestNotInOrder != null)
                {
                    preApprovedTestToUpdate = string.Join(",", preApprovedTestNotInOrder.Select(x => ((TestType)x).ToString()));
                }

                if (preApprovedPackageUpdated || !preApprovedTestNotInOrder.IsNullOrEmpty())
                {
                    list.Add(new EventCusomerAdjustOrderViewModel
                    {
                        CustomerId = eventCustomer.CustomerId,
                        EventId    = eventCustomer.EventId,
                        FirstName  = model.FirstName,
                        MiddleName = model.MiddleName,
                        LastName   = model.LastName,
                        MemberId   = model.MemberId,
                        EventDate  = theEvent.EventDate,
                        PreApprovedPackageToAdjust = preApprovedPackageUpdated ? model.PreApprovedPackage : string.Empty,
                        PreApprovedTestsToAdjust   = preApprovedTestToUpdate
                    });


                    long newPackageId = 0;
                    long oldPackageId = 0;

                    if (preApprovedPackageUpdated)
                    {
                        newPackageId = model.PreApprovedPackageId;
                    }

                    if (eventPackagePair != null)
                    {
                        var package = eventPackages.First(x => x.Id == eventPackagePair.SecondValue).Package;
                        oldPackageId = package.Id;
                    }

                    var orderedTestIds = orderIdTestIdPairs.Where(x => x.FirstValue == order.Id).Select(x => x.SecondValue);

                    AdjustCustomerOrder(eventCustomer, order, newPackageId, oldPackageId, createdByOrgRoleUserId, customerId, orderedTestIds,
                                        preApprovedTestIds, testIdInPackage, corporateUploadId.HasValue ? corporateUploadId.Value : 0);
                }
            }

            return(list.IsNullOrEmpty() ? null : list);
        }
Exemplo n.º 30
0
        public JsonResult UploadCustomers(UploadCorporateCustomers model)
        {
            var fileName          = model.FileName;
            var pageSize          = model.PageSize;
            var tag               = model.Tag;
            var failedRecordsFile = model.FailedRecordsFile;
            var adjustOrderFile   = model.AdjustOrderRecordsFile;
            var pageNumber        = model.PageNumber;
            var customTags        = model.CustomTags;

            if (customTags != null)
            {
                customTags = customTags.Where(s => !string.IsNullOrEmpty(s)).Select(s => s).ToList();
            }
            var corporateModel = new CorporateUploadEditModel {
                Tag = tag, FileName = fileName, UploadCorporateId = model.UploadCorporateId
            };

            var mediaLocation = _mediaRepository.GetUploadCsvMediaFileLocation();
            var file          = mediaLocation.PhysicalPath + corporateModel.FileName;

            var csvReader = IoC.Resolve <ICsvReader>();

            var languages = _languageRepository.GetAll();
            var labs      = _labRepository.GetAll();

            var failureRecords         = mediaLocation.PhysicalPath + failedRecordsFile;
            var adjustOrderRecordsFile = mediaLocation.PhysicalPath + model.AdjustOrderRecordsFile;

            var customerTable        = csvReader.ReadWithTextQualifier(file);
            var createdByOrgRoleUser = Mapper.Map <OrganizationRoleUserModel, OrganizationRoleUser>(_sessionContext.UserSession.CurrentOrganizationRole);

            var customerIdWithSameAcesId = new List <CustomerWithDuplicateAcesModel>();

            try
            {
                //var failedCustomers = new List<CorporateCustomerEditModel>();
                var adjustOrderForCustomerEditModel = new List <EventCusomerAdjustOrderViewModel>();

                var query = customerTable.AsEnumerable();

                var rows                    = query.Skip(pageSize * (pageNumber - 1)).Take(pageSize);
                var customerToRender        = rows.Count();
                var corporateAccount        = _corporateAccountRepository.GetByTag(tag);
                var accountAdditionalFields = _accountAdditionalFieldRepository.GetAccountAdditionalFieldsEditModelByAccountId(corporateAccount.Id);
                var customerEditModel       = new CorporateCustomerEditModel();

                foreach (DataRow row in rows)
                {
                    var sb = new StringBuilder();
                    try
                    {
                        customerEditModel = _corporateUploadHelper.GetCorporateCustomerEditModel(row);

                        var customerWithDuplicateAcesModel = new CustomerWithDuplicateAcesModel();
                        _corporateUploadService.CorporateUploadDataRow(customerEditModel, languages, labs, customTags, corporateModel,
                                                                       accountAdditionalFields, adjustOrderForCustomerEditModel, createdByOrgRoleUser,
                                                                       _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId, null,
                                                                       (long)MemberUploadSource.CorporateUplaod, sb, model.UploadCorporateId.Value, out customerWithDuplicateAcesModel);

                        if (customerWithDuplicateAcesModel != null && customerWithDuplicateAcesModel.CustomerId > 0)
                        {
                            customerIdWithSameAcesId.Add(customerWithDuplicateAcesModel);
                        }
                    }
                    catch (Exception ex)
                    {
                        customerEditModel.ErrorMessage = sb.ToString();
                        if (!string.IsNullOrEmpty(ex.Message))
                        {
                            customerEditModel.ErrorMessage += " Error Message: " + ex.Message;
                        }
                        //failedCustomers.Add(customerEditModel);
                    }

                    var memberUploadParseDetail = _memberUploadParseDetailFactory.GetDomain(customerEditModel, model.UploadCorporateId.Value);
                    _memberUploadParseDetailRepository.Save(memberUploadParseDetail);
                }

                if (!customerIdWithSameAcesId.IsNullOrEmpty())
                {
                    _customerWithDuplicateAcesIdFileGenerator.GenerateCsvFile(model.UploadCorporateId.Value, customerIdWithSameAcesId);
                }

                corporateModel.TotalCustomers = customerTable.Rows.Count;

                var totalPages      = corporateModel.TotalCustomers / pageSize + (corporateModel.TotalCustomers % pageSize != 0 ? 1 : 0);
                var failedCustomers = _memberUploadParseDetailRepository.GetByCorporateUploadId(model.UploadCorporateId.Value, false);
                corporateModel.FailedCustomers = failedCustomers != null?failedCustomers.Count() : 0;

                corporateModel.UploadedCustomers = customerToRender - corporateModel.FailedCustomers;
                corporateModel.IsParseSucceded   = totalPages == pageNumber;

                if (corporateModel.IsParseSucceded)
                {
                    var corporateUploadedBy = _sessionContext.UserSession.FullName;

                    string corporateName = string.Empty;
                    if (corporateAccount != null)
                    {
                        var organization = _organizationRepository.GetOrganizationbyId(corporateAccount.Id);
                        if (organization != null)
                        {
                            corporateName = organization.Name;
                        }
                    }

                    var corporateUploadNotificationModel = _emailNotificationModelsFactory.GetCorporateUploadNotificationViewModel(corporateName, corporateUploadedBy, corporateModel.TotalCustomers, (corporateModel.TotalCustomers - corporateModel.FailedCustomers), corporateModel.FailedCustomers);

                    _notifier.NotifySubscribersViaEmail(NotificationTypeAlias.CorporateUploadNotification, EmailTemplateAlias.CorporateUploadNotification, corporateUploadNotificationModel, 0, 1, "System: Corporate Upload Notification");
                    _logger.Info("Corporate Upload Notification:Mail Send for upload corporate :" + tag + " UploadedBy:  " + corporateUploadedBy + " on : " + DateTime.Now);
                }

                corporateModel.FailedRecordsFile = failedRecordsFile;

                if (failedCustomers != null && failedCustomers.Any())
                {
                    var failedMember = _memberUploadParseDetailFactory.GetCorporateCustomerListModel(failedCustomers, model.UploadCorporateId.Value);
                    _corporateUploadHelper.UpdateFailedRecords(failureRecords, failedMember);

                    if (model.LogFileId < 1)
                    {
                        var fileInfo = new FileInfo(failureRecords);

                        var files = new Core.Application.Domain.File
                        {
                            Path       = fileInfo.Name,
                            FileSize   = fileInfo.Length,
                            Type       = FileType.Csv,
                            UploadedBy = new OrganizationRoleUser(_sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId),
                            UploadedOn = DateTime.Now
                        };

                        files = _fileRepository.Save(files);

                        model.LogFileId = files.Id;
                    }
                }

                if (adjustOrderForCustomerEditModel.Any())
                {
                    _corporateUploadHelper.UpdateAdjustOrderRecords(adjustOrderRecordsFile, adjustOrderForCustomerEditModel);
                    if (model.AdjustOrderLogFileId < 1)
                    {
                        var fileInfo = new FileInfo(adjustOrderRecordsFile);
                        var files    = new Core.Application.Domain.File
                        {
                            Path       = fileInfo.Name,
                            FileSize   = fileInfo.Length,
                            Type       = FileType.Csv,
                            UploadedBy = new OrganizationRoleUser(_sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId),
                            UploadedOn = DateTime.Now
                        };

                        files = _fileRepository.Save(files);

                        model.AdjustOrderLogFileId = files.Id;
                    }
                }

                if (model.UploadCorporateId.HasValue && corporateModel.IsParseSucceded)
                {
                    var count = _corporateUploadHelper.FailedCustomerCount(failedRecordsFile, mediaLocation);

                    var uploadCorporate = _corporateUploadRepository.GetById(model.UploadCorporateId.Value);
                    uploadCorporate.SuccessfullUploadCount = (corporateModel.TotalCustomers - count);
                    uploadCorporate.FailedUploadCount      = count;

                    if (model.LogFileId > 0)
                    {
                        uploadCorporate.LogFileId = model.LogFileId;
                    }

                    if (model.AdjustOrderLogFileId > 0)
                    {
                        uploadCorporate.AdjustOrderLogFileId = model.AdjustOrderLogFileId;
                    }

                    uploadCorporate.ParseStatus = (int)MemberUploadParseStatus.Start;
                    _corporateUploadRepository.Save(uploadCorporate);
                }

                corporateModel.FailedCustomersListPath = _corporateUploadHelper.CheckIsFileContainsRecord(corporateModel.IsParseSucceded, mediaLocation, failedRecordsFile);
                corporateModel.AdjustOrderRecordsFile  = _corporateUploadHelper.CheckIsFileContainsRecord(corporateModel.IsParseSucceded, mediaLocation, adjustOrderFile);
            }
            catch (Exception ex)
            {
                corporateModel.FeedbackMessage = FeedbackMessageModel.CreateFailureMessage(ex.Message);
            }

            return(Json(new
            {
                corporateModel.FileName,
                corporateModel.UploadedCustomers,
                corporateModel.Tag,
                corporateModel.FailedCustomers,
                corporateModel.IsParseSucceded,
                PageNumber = pageNumber + 1,
                corporateModel.FailedCustomersListPath,
                LogFileId = model.LogFileId,
                corporateModel.AdjustOrderRecordsFile,
                model.AdjustOrderLogFileId
            }, JsonRequestBehavior.AllowGet));
        }