public override object Delete(int id, int CompanyId)
        {
            InsuranceMaster insuranceMasterDB = _context.InsuranceMasters.Include("addressInfo").Include("contactInfo")
                                                .Where(p => p.Id == id && p.CreatedByCompanyId.HasValue == true && p.CreatedByCompanyId == CompanyId &&
                                                       (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false)))
                                                .FirstOrDefault <InsuranceMaster>();

            if (insuranceMasterDB == null)
            {
                return(new BO.ErrorObject {
                    ErrorMessage = "No record found for this InsuranceMaster.", errorObject = "", ErrorLevel = ErrorLevel.Error
                });
            }

            insuranceMasterDB.AddressInfo.IsDeleted = true;
            insuranceMasterDB.ContactInfo.IsDeleted = true;
            insuranceMasterDB.IsDeleted             = true;

            _context.Entry(insuranceMasterDB).State = System.Data.Entity.EntityState.Modified;
            _context.SaveChanges();

            var res = ObjectConvert <BO.InsuranceMaster, InsuranceMaster>(insuranceMasterDB);

            return((object)res);
        }
Ejemplo n.º 2
0
 public HttpResponseMessage Post([FromBody] InsuranceMaster data)
 {
     return(requestHandler.CreateGbObject(Request, data));
 }
        public override object Save <T>(T entity)
        {
            BO.InsuranceMaster insuranceMasterBO = (BO.InsuranceMaster)(object) entity;
            BO.AddressInfo     addressBO         = insuranceMasterBO.AddressInfo;
            BO.ContactInfo     contactinfoBO     = insuranceMasterBO.ContactInfo;

            if (insuranceMasterBO.CreatedByCompanyId.HasValue == true)
            {
                InsuranceMaster insuranceMasterDB = new InsuranceMaster();

                using (var dbContextTransaction = _context.Database.BeginTransaction())
                {
                    bool IsEditMode = false;
                    IsEditMode = (insuranceMasterBO != null && insuranceMasterBO.ID > 0) ? true : false;

                    AddressInfo addressDB     = new AddressInfo();
                    ContactInfo contactinfoDB = new ContactInfo();

                    #region Address
                    if (addressBO != null)
                    {
                        bool Add_addressDB = false;
                        addressDB = _context.AddressInfoes.Where(p => p.id == addressBO.ID && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false))).FirstOrDefault();

                        if (addressDB == null && addressBO.ID <= 0)
                        {
                            addressDB     = new AddressInfo();
                            Add_addressDB = true;
                        }
                        else if (addressDB == null && addressBO.ID > 0)
                        {
                            dbContextTransaction.Rollback();
                            return(new BO.ErrorObject {
                                errorObject = "", ErrorMessage = "Address details dosent exists.", ErrorLevel = ErrorLevel.Error
                            });
                        }

                        addressDB.Name     = IsEditMode == true && addressBO.Name == null ? addressDB.Name : addressBO.Name;
                        addressDB.Address1 = IsEditMode == true && addressBO.Address1 == null ? addressDB.Address1 : addressBO.Address1;
                        addressDB.Address2 = IsEditMode == true && addressBO.Address2 == null ? addressDB.Address2 : addressBO.Address2;
                        addressDB.City     = IsEditMode == true && addressBO.City == null ? addressDB.City : addressBO.City;
                        addressDB.State    = IsEditMode == true && addressBO.State == null ? addressDB.State : addressBO.State;
                        addressDB.ZipCode  = IsEditMode == true && addressBO.ZipCode == null ? addressDB.ZipCode : addressBO.ZipCode;
                        addressDB.Country  = IsEditMode == true && addressBO.Country == null ? addressDB.Country : addressBO.Country;
                        //[STATECODE-CHANGE]
                        //addressDB.StateCode = IsEditMode == true && addressBO.StateCode == null ? addressDB.StateCode : addressBO.StateCode;
                        //[STATECODE-CHANGE]

                        if (Add_addressDB == true)
                        {
                            addressDB = _context.AddressInfoes.Add(addressDB);
                        }
                        _context.SaveChanges();
                    }
                    else
                    {
                        if (IsEditMode == false)
                        {
                            dbContextTransaction.Rollback();
                            return(new BO.ErrorObject {
                                errorObject = "", ErrorMessage = "Please pass valid address details.", ErrorLevel = ErrorLevel.Error
                            });
                        }
                        addressDB = null;
                    }
                    #endregion

                    #region Contact Info
                    if (contactinfoBO != null)
                    {
                        bool Add_contactinfoDB = false;
                        contactinfoDB = _context.ContactInfoes.Where(p => p.id == contactinfoBO.ID && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false))).FirstOrDefault();

                        if (contactinfoDB == null && contactinfoBO.ID <= 0)
                        {
                            contactinfoDB     = new ContactInfo();
                            Add_contactinfoDB = true;
                        }
                        else if (contactinfoDB == null && contactinfoBO.ID > 0)
                        {
                            dbContextTransaction.Rollback();
                            return(new BO.ErrorObject {
                                errorObject = "", ErrorMessage = "Contact details dosent exists.", ErrorLevel = ErrorLevel.Error
                            });
                        }

                        contactinfoDB.Name                   = IsEditMode == true && contactinfoBO.Name == null ? contactinfoDB.Name : contactinfoBO.Name;
                        contactinfoDB.CellPhone              = IsEditMode == true && contactinfoBO.CellPhone == null ? contactinfoDB.CellPhone : contactinfoBO.CellPhone;
                        contactinfoDB.EmailAddress           = IsEditMode == true && contactinfoBO.EmailAddress == null ? contactinfoDB.EmailAddress : contactinfoBO.EmailAddress;
                        contactinfoDB.HomePhone              = IsEditMode == true && contactinfoBO.HomePhone == null ? contactinfoDB.HomePhone : contactinfoBO.HomePhone;
                        contactinfoDB.WorkPhone              = IsEditMode == true && contactinfoBO.WorkPhone == null ? contactinfoDB.WorkPhone : contactinfoBO.WorkPhone;
                        contactinfoDB.FaxNo                  = IsEditMode == true && contactinfoBO.FaxNo == null ? contactinfoDB.FaxNo : contactinfoBO.FaxNo;
                        contactinfoDB.OfficeExtension        = IsEditMode == true && contactinfoBO.OfficeExtension == null ? contactinfoDB.OfficeExtension : contactinfoBO.OfficeExtension;
                        contactinfoDB.AlternateEmail         = IsEditMode == true && contactinfoBO.AlternateEmail == null ? contactinfoDB.AlternateEmail : contactinfoBO.AlternateEmail;
                        contactinfoDB.PreferredCommunication = IsEditMode == true && contactinfoBO.PreferredCommunication == null ? contactinfoDB.PreferredCommunication : contactinfoBO.PreferredCommunication;
                        contactinfoDB.IsDeleted              = contactinfoBO.IsDeleted;

                        if (Add_contactinfoDB == true)
                        {
                            contactinfoDB = _context.ContactInfoes.Add(contactinfoDB);
                        }
                        _context.SaveChanges();
                    }
                    else
                    {
                        if (IsEditMode == false)
                        {
                            dbContextTransaction.Rollback();
                            return(new BO.ErrorObject {
                                errorObject = "", ErrorMessage = "Please pass valid contact details.", ErrorLevel = ErrorLevel.Error
                            });
                        }
                        contactinfoDB = null;
                    }
                    #endregion

                    #region Insurance Master
                    if (insuranceMasterBO != null)
                    {
                        bool Add_insuranceMasterDB = false;
                        insuranceMasterDB = _context.InsuranceMasters.Where(p => p.Id == insuranceMasterBO.ID && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false))).FirstOrDefault <InsuranceMaster>();

                        if (insuranceMasterDB == null && insuranceMasterBO.ID <= 0)
                        {
                            insuranceMasterDB     = new InsuranceMaster();
                            Add_insuranceMasterDB = true;
                        }
                        else if (insuranceMasterDB == null && insuranceMasterBO.ID > 0)
                        {
                            dbContextTransaction.Rollback();
                            return(new BO.ErrorObject {
                                errorObject = "", ErrorMessage = "Insurance Master information dosent exists.", ErrorLevel = ErrorLevel.Error
                            });
                        }

                        insuranceMasterDB.CompanyCode        = insuranceMasterBO.CompanyCode;
                        insuranceMasterDB.CompanyName        = IsEditMode == true && insuranceMasterBO.CompanyName == null ? insuranceMasterDB.CompanyName : insuranceMasterBO.CompanyName;
                        insuranceMasterDB.ZeusID             = insuranceMasterBO.ZeusID;
                        insuranceMasterDB.PriorityBilling    = insuranceMasterBO.PriorityBilling;
                        insuranceMasterDB.Only1500Form       = insuranceMasterBO.Only1500Form;
                        insuranceMasterDB.PaperAuthorization = insuranceMasterBO.PaperAuthorization;
                        insuranceMasterDB.CreatedByCompanyId = insuranceMasterBO.CreatedByCompanyId;

                        insuranceMasterDB.AddressInfoId = (addressDB != null && addressDB.id > 0) ? addressDB.id : insuranceMasterDB.AddressInfoId;
                        insuranceMasterDB.ContactInfoId = (contactinfoDB != null && contactinfoDB.id > 0) ? contactinfoDB.id : insuranceMasterDB.ContactInfoId;

                        if (Add_insuranceMasterDB == true)
                        {
                            insuranceMasterDB = _context.InsuranceMasters.Add(insuranceMasterDB);
                        }
                        _context.SaveChanges();
                    }
                    else
                    {
                        if (IsEditMode == false)
                        {
                            dbContextTransaction.Rollback();
                            return(new BO.ErrorObject {
                                errorObject = "", ErrorMessage = "Please pass valid insurance master information details.", ErrorLevel = ErrorLevel.Error
                            });
                        }
                        insuranceMasterDB = null;
                    }

                    _context.SaveChanges();
                    #endregion

                    dbContextTransaction.Commit();

                    insuranceMasterDB = _context.InsuranceMasters.Include("addressInfo").Include("contactInfo").Where(p => p.Id == insuranceMasterDB.Id && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false))).FirstOrDefault <InsuranceMaster>();
                }

                var res = ObjectConvert <BO.InsuranceMaster, InsuranceMaster>(insuranceMasterDB);
                return((object)res);
            }
            else
            {
                return(new BO.ErrorObject {
                    errorObject = "", ErrorMessage = "Cannot add or update Master Insurance data.", ErrorLevel = ErrorLevel.Error
                });
            }
        }
        public override T ObjectConvert <T, U>(U entity)
        {
            InsuranceMaster insuranceMaster = entity as InsuranceMaster;

            if (insuranceMaster == null)
            {
                return(default(T));
            }

            BO.InsuranceMaster boInsuranceMaster = new BO.InsuranceMaster();

            boInsuranceMaster.ID                 = insuranceMaster.Id;
            boInsuranceMaster.CompanyCode        = insuranceMaster.CompanyCode;
            boInsuranceMaster.CompanyName        = insuranceMaster.CompanyName;
            boInsuranceMaster.AddressInfoId      = insuranceMaster.AddressInfoId;
            boInsuranceMaster.ContactInfoId      = insuranceMaster.ContactInfoId;
            boInsuranceMaster.ZeusID             = insuranceMaster.ZeusID;
            boInsuranceMaster.PriorityBilling    = insuranceMaster.PriorityBilling;
            boInsuranceMaster.Only1500Form       = insuranceMaster.Only1500Form;
            boInsuranceMaster.PaperAuthorization = insuranceMaster.PaperAuthorization;
            boInsuranceMaster.CreatedByCompanyId = insuranceMaster.CreatedByCompanyId;

            //if (insuranceMaster.IsDeleted.HasValue)
            //    boInsuranceMaster.IsDeleted = insuranceMaster.IsDeleted.Value;

            if (insuranceMaster.AddressInfo != null)
            {
                BO.AddressInfo boAddress = new BO.AddressInfo();
                boAddress.Name                = insuranceMaster.AddressInfo.Name;
                boAddress.Address1            = insuranceMaster.AddressInfo.Address1;
                boAddress.Address2            = insuranceMaster.AddressInfo.Address2;
                boAddress.City                = insuranceMaster.AddressInfo.City;
                boAddress.State               = insuranceMaster.AddressInfo.State;
                boAddress.ZipCode             = insuranceMaster.AddressInfo.ZipCode;
                boAddress.Country             = insuranceMaster.AddressInfo.Country;
                boAddress.CreateByUserID      = insuranceMaster.AddressInfo.CreateByUserID;
                boAddress.ID                  = insuranceMaster.AddressInfo.id;
                boAddress.IsDeleted           = insuranceMaster.AddressInfo.IsDeleted;
                boInsuranceMaster.AddressInfo = boAddress;
            }

            if (insuranceMaster.ContactInfo != null)
            {
                BO.ContactInfo boContactInfo = new BO.ContactInfo();
                boContactInfo.Name                   = insuranceMaster.ContactInfo.Name;
                boContactInfo.CellPhone              = insuranceMaster.ContactInfo.CellPhone;
                boContactInfo.EmailAddress           = insuranceMaster.ContactInfo.EmailAddress;
                boContactInfo.HomePhone              = insuranceMaster.ContactInfo.HomePhone;
                boContactInfo.WorkPhone              = insuranceMaster.ContactInfo.WorkPhone;
                boContactInfo.FaxNo                  = insuranceMaster.ContactInfo.FaxNo;
                boContactInfo.OfficeExtension        = insuranceMaster.ContactInfo.OfficeExtension;
                boContactInfo.AlternateEmail         = insuranceMaster.ContactInfo.AlternateEmail;
                boContactInfo.PreferredCommunication = insuranceMaster.ContactInfo.PreferredCommunication;
                boContactInfo.CreateByUserID         = insuranceMaster.ContactInfo.CreateByUserID;
                boContactInfo.ID              = insuranceMaster.ContactInfo.id;
                boContactInfo.IsDeleted       = insuranceMaster.ContactInfo.IsDeleted;
                boInsuranceMaster.ContactInfo = boContactInfo;
            }

            boInsuranceMaster.IsDeleted      = insuranceMaster.IsDeleted;
            boInsuranceMaster.CreateByUserID = insuranceMaster.CreateByUserID;
            boInsuranceMaster.UpdateByUserID = insuranceMaster.UpdateByUserID;

            return((T)(object)boInsuranceMaster);
        }
        //public override object IsInsuranceInfoAdded(int id)
        //{
        //    var acc = _context.PatientInsuranceInfoes.Where(p => p.PatientId == id && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false)))
        //                                             .FirstOrDefault<PatientInsuranceInfo>();

        //    if (acc == null)
        //    {
        //        return false;
        //    }
        //    else
        //    {
        //        return true;
        //    }
        //}
        #endregion


        #region save
        public override object Save <T>(T entity)
        {
            BO.PatientInsuranceInfo insuranceBO = (BO.PatientInsuranceInfo)(object) entity;
            BO.AddressInfo          addressinfoPolicyHolderBO     = insuranceBO.AddressInfo1;
            BO.ContactInfo          contactinfoPolicyHolderBO     = insuranceBO.ContactInfo1;
            BO.AddressInfo          addressinfoInsuranceCompanyBO = insuranceBO.AddressInfo;
            BO.ContactInfo          contactinfoInsuranceCompanyBO = insuranceBO.ContactInfo;

            PatientInsuranceInfo insuranceDB = new PatientInsuranceInfo();

            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                bool IsEditMode = false;
                IsEditMode = (insuranceBO != null && insuranceBO.ID > 0) ? true : false;

                AddressInfo addressinfoPolicyHolderDB     = new AddressInfo();
                ContactInfo contactinfoPolicyHolderDB     = new ContactInfo();
                AddressInfo addressinfoInsuranceCompanyDB = new AddressInfo();
                ContactInfo contactinfoInsuranceCompanyDB = new ContactInfo();

                User userDB = new User();

                #region Address Poliy Holder
                if (addressinfoPolicyHolderBO != null)
                {
                    bool Add_addressDB = false;
                    addressinfoPolicyHolderDB = _context.AddressInfoes.Where(p => p.id == addressinfoPolicyHolderBO.ID).FirstOrDefault();

                    if (addressinfoPolicyHolderDB == null && addressinfoPolicyHolderBO.ID <= 0)
                    {
                        addressinfoPolicyHolderDB = new AddressInfo();
                        Add_addressDB             = true;
                    }
                    else if (addressinfoPolicyHolderDB == null && addressinfoPolicyHolderBO.ID > 0)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Policy address details dosent exists.", ErrorLevel = ErrorLevel.Error
                        });
                    }

                    addressinfoPolicyHolderDB.Name     = IsEditMode == true && addressinfoPolicyHolderBO.Name == null ? addressinfoPolicyHolderDB.Name : addressinfoPolicyHolderBO.Name;
                    addressinfoPolicyHolderDB.Address1 = IsEditMode == true && addressinfoPolicyHolderBO.Address1 == null ? addressinfoPolicyHolderDB.Address1 : addressinfoPolicyHolderBO.Address1;
                    addressinfoPolicyHolderDB.Address2 = IsEditMode == true && addressinfoPolicyHolderBO.Address2 == null ? addressinfoPolicyHolderDB.Address2 : addressinfoPolicyHolderBO.Address2;
                    addressinfoPolicyHolderDB.City     = IsEditMode == true && addressinfoPolicyHolderBO.City == null ? addressinfoPolicyHolderDB.City : addressinfoPolicyHolderBO.City;
                    addressinfoPolicyHolderDB.State    = IsEditMode == true && addressinfoPolicyHolderBO.State == null ? addressinfoPolicyHolderDB.State : addressinfoPolicyHolderBO.State;
                    addressinfoPolicyHolderDB.ZipCode  = IsEditMode == true && addressinfoPolicyHolderBO.ZipCode == null ? addressinfoPolicyHolderDB.ZipCode : addressinfoPolicyHolderBO.ZipCode;
                    addressinfoPolicyHolderDB.Country  = IsEditMode == true && addressinfoPolicyHolderBO.Country == null ? addressinfoPolicyHolderDB.Country : addressinfoPolicyHolderBO.Country;
                    //[STATECODE-CHANGE]
                    //addressinfoPolicyHolderDB.StateCode = IsEditMode == true && addressinfoPolicyHolderBO.StateCode == null ? addressinfoPolicyHolderDB.StateCode : addressinfoPolicyHolderBO.StateCode;
                    //[STATECODE-CHANGE]

                    if (Add_addressDB == true)
                    {
                        addressinfoPolicyHolderDB = _context.AddressInfoes.Add(addressinfoPolicyHolderDB);
                    }
                    _context.SaveChanges();
                }
                else
                {
                    if (IsEditMode == false)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Please pass valid policy address details.", ErrorLevel = ErrorLevel.Error
                        });
                    }
                    addressinfoPolicyHolderDB = null;
                }
                #endregion

                #region Contact Info Policy Holder
                if (contactinfoPolicyHolderBO != null)
                {
                    bool Add_contactinfoDB = false;
                    contactinfoPolicyHolderDB = _context.ContactInfoes.Where(p => p.id == contactinfoPolicyHolderBO.ID).FirstOrDefault();

                    if (contactinfoPolicyHolderDB == null && contactinfoPolicyHolderBO.ID <= 0)
                    {
                        contactinfoPolicyHolderDB = new ContactInfo();
                        Add_contactinfoDB         = true;
                    }
                    else if (contactinfoPolicyHolderDB == null && contactinfoPolicyHolderBO.ID > 0)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Policy contact details dosent exists.", ErrorLevel = ErrorLevel.Error
                        });
                    }

                    contactinfoPolicyHolderDB.Name                   = IsEditMode == true && contactinfoPolicyHolderBO.Name == null ? contactinfoPolicyHolderDB.Name : contactinfoPolicyHolderBO.Name;
                    contactinfoPolicyHolderDB.CellPhone              = IsEditMode == true && contactinfoPolicyHolderBO.CellPhone == null ? contactinfoPolicyHolderDB.CellPhone : contactinfoPolicyHolderBO.CellPhone;
                    contactinfoPolicyHolderDB.EmailAddress           = IsEditMode == true && contactinfoPolicyHolderBO.EmailAddress == null ? contactinfoPolicyHolderDB.EmailAddress : contactinfoPolicyHolderBO.EmailAddress;
                    contactinfoPolicyHolderDB.HomePhone              = IsEditMode == true && contactinfoPolicyHolderBO.HomePhone == null ? contactinfoPolicyHolderDB.HomePhone : contactinfoPolicyHolderBO.HomePhone;
                    contactinfoPolicyHolderDB.WorkPhone              = IsEditMode == true && contactinfoPolicyHolderBO.WorkPhone == null ? contactinfoPolicyHolderDB.WorkPhone : contactinfoPolicyHolderBO.WorkPhone;
                    contactinfoPolicyHolderDB.FaxNo                  = IsEditMode == true && contactinfoPolicyHolderBO.FaxNo == null ? contactinfoPolicyHolderDB.FaxNo : contactinfoPolicyHolderBO.FaxNo;
                    contactinfoPolicyHolderDB.OfficeExtension        = IsEditMode == true && contactinfoPolicyHolderBO.OfficeExtension == null ? contactinfoPolicyHolderDB.OfficeExtension : contactinfoPolicyHolderBO.OfficeExtension;
                    contactinfoPolicyHolderDB.AlternateEmail         = IsEditMode == true && contactinfoPolicyHolderBO.AlternateEmail == null ? contactinfoPolicyHolderDB.AlternateEmail : contactinfoPolicyHolderBO.AlternateEmail;
                    contactinfoPolicyHolderDB.PreferredCommunication = IsEditMode == true && contactinfoPolicyHolderBO.PreferredCommunication == null ? contactinfoPolicyHolderDB.PreferredCommunication : contactinfoPolicyHolderBO.PreferredCommunication;
                    contactinfoPolicyHolderDB.IsDeleted              = contactinfoPolicyHolderBO.IsDeleted;

                    if (Add_contactinfoDB == true)
                    {
                        contactinfoPolicyHolderDB = _context.ContactInfoes.Add(contactinfoPolicyHolderDB);
                    }
                    _context.SaveChanges();
                }
                else
                {
                    if (IsEditMode == false)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Please pass valid policy contact details.", ErrorLevel = ErrorLevel.Error
                        });
                    }
                    contactinfoPolicyHolderDB = null;
                }
                #endregion

                #region Address Insurance Company
                if (addressinfoInsuranceCompanyBO != null)
                {
                    bool Add_addressDB = false;
                    addressinfoInsuranceCompanyDB = _context.AddressInfoes.Where(p => p.id == addressinfoInsuranceCompanyBO.ID).FirstOrDefault();

                    if (addressinfoInsuranceCompanyDB == null && addressinfoInsuranceCompanyBO.ID <= 0)
                    {
                        addressinfoInsuranceCompanyDB = new AddressInfo();
                        Add_addressDB = true;
                    }
                    else if (addressinfoInsuranceCompanyDB == null && addressinfoInsuranceCompanyBO.ID > 0)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Insurance address details dosent exists.", ErrorLevel = ErrorLevel.Error
                        });
                    }

                    addressinfoInsuranceCompanyDB.id       = addressinfoInsuranceCompanyBO.ID;
                    addressinfoInsuranceCompanyDB.Name     = IsEditMode == true && addressinfoInsuranceCompanyBO.Name == null ? addressinfoInsuranceCompanyDB.Name : addressinfoInsuranceCompanyBO.Name;
                    addressinfoInsuranceCompanyDB.Address1 = IsEditMode == true && addressinfoInsuranceCompanyBO.Address1 == null ? addressinfoInsuranceCompanyDB.Address1 : addressinfoInsuranceCompanyBO.Address1;
                    addressinfoInsuranceCompanyDB.Address2 = IsEditMode == true && addressinfoInsuranceCompanyBO.Address2 == null ? addressinfoInsuranceCompanyDB.Address2 : addressinfoInsuranceCompanyBO.Address2;
                    addressinfoInsuranceCompanyDB.City     = IsEditMode == true && addressinfoInsuranceCompanyBO.City == null ? addressinfoInsuranceCompanyDB.City : addressinfoInsuranceCompanyBO.City;
                    addressinfoInsuranceCompanyDB.State    = IsEditMode == true && addressinfoInsuranceCompanyBO.State == null ? addressinfoInsuranceCompanyDB.State : addressinfoInsuranceCompanyBO.State;
                    addressinfoInsuranceCompanyDB.ZipCode  = IsEditMode == true && addressinfoInsuranceCompanyBO.ZipCode == null ? addressinfoInsuranceCompanyDB.ZipCode : addressinfoInsuranceCompanyBO.ZipCode;
                    addressinfoInsuranceCompanyDB.Country  = IsEditMode == true && addressinfoInsuranceCompanyBO.Country == null ? addressinfoInsuranceCompanyDB.Country : addressinfoInsuranceCompanyBO.Country;
                    //[STATECODE-CHANGE]
                    //addressinfoInsuranceCompanyDB.StateCode = IsEditMode == true && addressinfoInsuranceCompanyBO.StateCode == null ? addressinfoInsuranceCompanyDB.StateCode : addressinfoInsuranceCompanyBO.StateCode;
                    //[STATECODE-CHANGE]

                    if (Add_addressDB == true)
                    {
                        addressinfoInsuranceCompanyDB = _context.AddressInfoes.Add(addressinfoInsuranceCompanyDB);
                    }
                    _context.SaveChanges();
                }
                else
                {
                    //if (IsEditMode == false)
                    //{
                    //    dbContextTransaction.Rollback();
                    //    return new BO.ErrorObject { errorObject = "", ErrorMessage = "Please pass valid insurance address details.", ErrorLevel = ErrorLevel.Error };
                    //}
                    addressinfoInsuranceCompanyDB = null;
                }
                #endregion

                #region Contact Info Insurance Company
                if (contactinfoInsuranceCompanyBO != null)
                {
                    bool Add_contactinfoDB = false;
                    contactinfoInsuranceCompanyDB = _context.ContactInfoes.Where(p => p.id == contactinfoInsuranceCompanyBO.ID).FirstOrDefault();

                    if (contactinfoInsuranceCompanyDB == null && contactinfoInsuranceCompanyBO.ID <= 0)
                    {
                        contactinfoInsuranceCompanyDB = new ContactInfo();
                        Add_contactinfoDB             = true;
                    }
                    else if (contactinfoInsuranceCompanyDB == null && contactinfoInsuranceCompanyBO.ID > 0)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Insurance contact details dosent exists.", ErrorLevel = ErrorLevel.Error
                        });
                    }

                    contactinfoInsuranceCompanyDB.Name                   = IsEditMode == true && contactinfoInsuranceCompanyBO.Name == null ? contactinfoInsuranceCompanyDB.Name : contactinfoInsuranceCompanyBO.Name;
                    contactinfoInsuranceCompanyDB.CellPhone              = IsEditMode == true && contactinfoInsuranceCompanyBO.CellPhone == null ? contactinfoInsuranceCompanyDB.CellPhone : contactinfoInsuranceCompanyBO.CellPhone;
                    contactinfoInsuranceCompanyDB.EmailAddress           = IsEditMode == true && contactinfoInsuranceCompanyBO.EmailAddress == null ? contactinfoInsuranceCompanyDB.EmailAddress : contactinfoInsuranceCompanyBO.EmailAddress;
                    contactinfoInsuranceCompanyDB.HomePhone              = IsEditMode == true && contactinfoInsuranceCompanyBO.HomePhone == null ? contactinfoInsuranceCompanyDB.HomePhone : contactinfoInsuranceCompanyBO.HomePhone;
                    contactinfoInsuranceCompanyDB.WorkPhone              = IsEditMode == true && contactinfoInsuranceCompanyBO.WorkPhone == null ? contactinfoInsuranceCompanyDB.WorkPhone : contactinfoInsuranceCompanyBO.WorkPhone;
                    contactinfoInsuranceCompanyDB.FaxNo                  = IsEditMode == true && contactinfoInsuranceCompanyBO.FaxNo == null ? contactinfoInsuranceCompanyDB.FaxNo : contactinfoInsuranceCompanyBO.FaxNo;
                    contactinfoInsuranceCompanyDB.OfficeExtension        = IsEditMode == true && contactinfoInsuranceCompanyBO.OfficeExtension == null ? contactinfoInsuranceCompanyDB.OfficeExtension : contactinfoInsuranceCompanyBO.OfficeExtension;
                    contactinfoInsuranceCompanyDB.AlternateEmail         = IsEditMode == true && contactinfoInsuranceCompanyBO.AlternateEmail == null ? contactinfoInsuranceCompanyDB.AlternateEmail : contactinfoInsuranceCompanyBO.AlternateEmail;
                    contactinfoInsuranceCompanyDB.PreferredCommunication = IsEditMode == true && contactinfoInsuranceCompanyBO.PreferredCommunication == null ? contactinfoInsuranceCompanyDB.PreferredCommunication : contactinfoInsuranceCompanyBO.PreferredCommunication;
                    contactinfoInsuranceCompanyDB.IsDeleted              = contactinfoInsuranceCompanyBO.IsDeleted;

                    if (Add_contactinfoDB == true)
                    {
                        contactinfoInsuranceCompanyDB = _context.ContactInfoes.Add(contactinfoInsuranceCompanyDB);
                    }
                    _context.SaveChanges();
                }
                else
                {
                    if (IsEditMode == false)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Please pass valid insurance contact details.", ErrorLevel = ErrorLevel.Error
                        });
                    }
                    contactinfoInsuranceCompanyDB = null;
                }
                #endregion

                #region insurance
                if (insuranceBO != null)
                {
                    bool Add_insuranceDB = false;
                    insuranceDB = _context.PatientInsuranceInfoes.Where(p => p.Id == insuranceBO.ID).FirstOrDefault <PatientInsuranceInfo>();

                    if (insuranceDB == null && insuranceBO.ID <= 0)
                    {
                        insuranceDB     = new PatientInsuranceInfo();
                        Add_insuranceDB = true;
                    }
                    else if (insuranceDB == null && insuranceBO.ID > 0)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Patient Insurance dosent exists.", ErrorLevel = ErrorLevel.Error
                        });
                    }
                    insuranceDB.CaseId                        = insuranceBO.CaseId;
                    insuranceDB.PolicyHolderName              = IsEditMode == true && insuranceBO.PolicyHoldersName == null ? insuranceDB.PolicyHolderName : insuranceBO.PolicyHoldersName;
                    insuranceDB.PolicyHolderAddressInfoId     = (addressinfoPolicyHolderDB != null && addressinfoPolicyHolderDB.id > 0) ? addressinfoPolicyHolderDB.id : insuranceDB.PolicyHolderAddressInfoId;
                    insuranceDB.PolicyHolderContactInfoId     = (contactinfoPolicyHolderDB != null && contactinfoPolicyHolderDB.id > 0) ? contactinfoPolicyHolderDB.id : insuranceDB.PolicyHolderContactInfoId;
                    insuranceDB.PolicyOwnerId                 = IsEditMode == true && insuranceBO.PolicyOwnerId == null ? insuranceDB.PolicyOwnerId : insuranceBO.PolicyOwnerId;
                    insuranceDB.InsuranceCompanyCode          = IsEditMode == true && insuranceBO.InsuranceCompanyCode == null ? insuranceDB.InsuranceCompanyCode : insuranceBO.InsuranceCompanyCode;
                    insuranceDB.InsuranceCompanyAddressInfoId = (addressinfoInsuranceCompanyDB != null && addressinfoInsuranceCompanyDB.id > 0) ? addressinfoInsuranceCompanyDB.id : insuranceDB.InsuranceCompanyAddressInfoId;
                    insuranceDB.InsuranceCompanyContactInfoId = (contactinfoInsuranceCompanyDB != null && contactinfoInsuranceCompanyDB.id > 0) ? contactinfoInsuranceCompanyDB.id : insuranceDB.InsuranceCompanyContactInfoId;
                    insuranceDB.PolicyNo                      = IsEditMode == true && insuranceBO.PolicyNo == null ? insuranceDB.PolicyNo : insuranceBO.PolicyNo;
                    insuranceDB.ContactPerson                 = IsEditMode == true && insuranceBO.ContactPerson == null ? insuranceDB.ContactPerson : insuranceBO.ContactPerson;
                    insuranceDB.InsuranceTypeId               = IsEditMode == true && insuranceBO.InsuranceTypeId == null ? insuranceDB.InsuranceTypeId : insuranceBO.InsuranceTypeId;
                    insuranceDB.IsInActive                    = insuranceBO.IsInActive;

                    //insuranceDB.InsuranceMasterId = IsEditMode == true && insuranceBO.InsuranceMasterId == null ? insuranceDB.InsuranceMasterId : insuranceBO.InsuranceMasterId;
                    InsuranceMaster InsuranceMasterDB = _context.InsuranceMasters.Where(p => insuranceBO.InsuranceMasterId.HasValue == true && p.Id == insuranceBO.InsuranceMasterId).FirstOrDefault();
                    if (InsuranceMasterDB != null)
                    {
                        insuranceDB.InsuranceMasterId = insuranceBO.InsuranceMasterId;
                    }
                    else
                    {
                        if (IsEditMode == false)
                        {
                            dbContextTransaction.Rollback();
                            return(new BO.ErrorObject {
                                errorObject = "", ErrorMessage = "Please pass valid Insurance Master Id.", ErrorLevel = ErrorLevel.Error
                            });
                        }
                    }

                    if (Add_insuranceDB == true)
                    {
                        insuranceDB = _context.PatientInsuranceInfoes.Add(insuranceDB);
                    }
                    _context.SaveChanges();
                }
                else
                {
                    if (IsEditMode == false)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Please pass valid Patient Insurance details.", ErrorLevel = ErrorLevel.Error
                        });
                    }
                    insuranceDB = null;
                }

                _context.SaveChanges();
                #endregion

                dbContextTransaction.Commit();

                insuranceDB = _context.PatientInsuranceInfoes.Include("InsuranceMaster").Where(p => p.Id == insuranceDB.Id).FirstOrDefault <PatientInsuranceInfo>();
            }

            var res = Convert <BO.PatientInsuranceInfo, PatientInsuranceInfo>(insuranceDB);
            return((object)res);
        }
Ejemplo n.º 6
0
        public override object SaveEOVisit <T>(T entity)
        {
            BO.EOVisit       EOVisitBO        = (BO.EOVisit)(object) entity;
            BO.CalendarEvent CalendarEventBO  = EOVisitBO.CalendarEvent;
            BO.Doctor        DoctorBO         = EOVisitBO.Doctor;
            string           doctorUserName   = string.Empty;
            bool             sendNotification = false;
            bool             sendMessage      = false;

            //CalenderEventBO
            if (CalendarEventBO != null)
            {
                List <BO.FreeSlots>     currentEventSlots = new List <BO.FreeSlots>();
                CalendarEventRepository calEventRepo      = new CalendarEventRepository(_context);
                currentEventSlots = calEventRepo.GetBusySlotsByCalendarEvent(CalendarEventBO) as List <BO.FreeSlots>;

                if (currentEventSlots.Count > 0)
                {
                    DateTime dtStartDate = currentEventSlots.Min(p => p.ForDate);
                    DateTime dtEndDate   = currentEventSlots.Max(p => p.ForDate).AddDays(1);

                    List <BO.StartAndEndTime> busySlots = new List <BO.StartAndEndTime>();

                    if (EOVisitBO.DoctorId != null)
                    {
                        var result = calEventRepo.GetBusySlotsForDoctors(EOVisitBO.DoctorId.Value, dtStartDate, dtEndDate);
                        if (result is BO.ErrorObject)
                        {
                            return(result);
                        }
                        else
                        {
                            busySlots = result as List <BO.StartAndEndTime>;
                        }
                    }

                    foreach (var eachDayEventSlot in currentEventSlots)
                    {
                        DateTime ForDate = eachDayEventSlot.ForDate;
                        foreach (var eachEventSlot in eachDayEventSlot.StartAndEndTimes)
                        {
                            DateTime StartTime = eachEventSlot.StartTime;
                            DateTime EndTime   = eachEventSlot.EndTime;
                            var      StartAndEndTimesForDate = busySlots.Where(p => p.StartTime.Date == ForDate).ToList();
                            if (StartAndEndTimesForDate.Count > 0)
                            {
                                var StartAndEndTimes = StartAndEndTimesForDate.Where(p => p.StartTime >= StartTime && p.StartTime < EndTime).ToList();

                                if (StartAndEndTimes.Count > 0)
                                {
                                    return(new BO.ErrorObject {
                                        errorObject = "", ErrorMessage = "The Doctor dosent have free slots for EO visit time on " + ForDate.ToShortDateString() + " (" + StartTime.ToShortTimeString() + " - " + EndTime.ToShortTimeString() + ").", ErrorLevel = ErrorLevel.Error
                                    });
                                }
                            }
                        }
                    }
                }
            }

            EOVisit EOVisitDB = new EOVisit();

            using (var dbContextTransaction = _context.Database.BeginTransaction())
            {
                bool IsEditMode             = false;
                bool IsAddModeCalendarEvent = false;

                IsEditMode = (EOVisitBO != null && EOVisitBO.ID > 0) ? true : false;
                string doctorContactNumber = null;
                User   doctoruser          = null;

                if (EOVisitBO.DoctorId == null && EOVisitBO.ID > 0)
                {
                    var EOvisitData = _context.EOVisits.Where(p => p.ID == EOVisitBO.ID).Select(p => new { p.DoctorId }).FirstOrDefault();

                    doctoruser = _context.Users.Where(usr => usr.id == EOvisitData.DoctorId).Include("ContactInfo").FirstOrDefault();
                }
                else if (EOVisitBO.DoctorId != null && EOVisitBO.DoctorId > 0)
                {
                    doctoruser = _context.Users.Where(usr => usr.id == EOVisitBO.DoctorId).Include("ContactInfo").FirstOrDefault();
                }

                if (doctoruser != null)
                {
                    doctorUserName      = doctoruser.UserName;
                    doctorContactNumber = doctoruser.ContactInfo.CellPhone;
                }

                CalendarEvent CalendarEventDB = new CalendarEvent();
                #region Calendar Event
                if (CalendarEventBO != null)
                {
                    bool Add_CalendarEventDB = false;
                    CalendarEventDB = _context.CalendarEvents.Where(p => p.Id == CalendarEventBO.ID &&
                                                                    (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false)))
                                      .FirstOrDefault();

                    if (CalendarEventDB == null && CalendarEventBO.ID <= 0)
                    {
                        CalendarEventDB     = new CalendarEvent();
                        Add_CalendarEventDB = true;
                    }
                    else if (CalendarEventDB == null && CalendarEventBO.ID > 0)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Calendar Event details dosent exists.", ErrorLevel = ErrorLevel.Error
                        });
                    }

                    //if (string.IsNullOrWhiteSpace(doctorUserName) == false && dictionary.ContainsKey(doctorUserName))
                    //{
                    //    if (CalendarEventDB.EventStart != CalendarEventBO.EventStart.Value) sendNotification = true;
                    //}

                    CalendarEventDB.Name                = IsEditMode == true && CalendarEventBO.Name == null ? CalendarEventDB.Name : CalendarEventBO.Name;
                    CalendarEventDB.EventStart          = IsEditMode == true && CalendarEventBO.EventStart.HasValue == false ? CalendarEventDB.EventStart : CalendarEventBO.EventStart.Value;
                    CalendarEventDB.EventEnd            = IsEditMode == true && CalendarEventBO.EventEnd.HasValue == false ? CalendarEventDB.EventEnd : CalendarEventBO.EventEnd.Value;
                    CalendarEventDB.TimeZone            = CalendarEventBO.TimeZone;
                    CalendarEventDB.Description         = CalendarEventBO.Description;
                    CalendarEventDB.RecurrenceId        = CalendarEventBO.RecurrenceId;
                    CalendarEventDB.RecurrenceRule      = IsEditMode == true && CalendarEventBO.RecurrenceRule == null ? CalendarEventDB.RecurrenceRule : CalendarEventBO.RecurrenceRule;
                    CalendarEventDB.RecurrenceException = IsEditMode == true && CalendarEventBO.RecurrenceException == null ? CalendarEventDB.RecurrenceException : CalendarEventBO.RecurrenceException;
                    CalendarEventDB.IsAllDay            = CalendarEventBO.IsAllDay;

                    if (IsEditMode == false)
                    {
                        CalendarEventDB.CreateByUserID = CalendarEventBO.CreateByUserID;
                        CalendarEventDB.CreateDate     = DateTime.UtcNow;
                    }
                    else
                    {
                        CalendarEventDB.UpdateByUserID = CalendarEventBO.UpdateByUserID;
                        CalendarEventDB.UpdateDate     = DateTime.UtcNow;
                    }

                    if (Add_CalendarEventDB == true)
                    {
                        CalendarEventDB = _context.CalendarEvents.Add(CalendarEventDB);
                    }
                    _context.SaveChanges();

                    #region send SMS notification
                    //try
                    //{
                    //    if (sendNotification)
                    //    {
                    //        if (doctorContactNumber != null && doctorContactNumber != string.Empty)
                    //        {
                    //            string to = doctorContactNumber;
                    //            string body = "Your appointment has been scheduled at. ";

                    //            string msgid = SMSGateway.SendSMS(to, body);
                    //        }
                    //    }
                    //}
                    //catch (Exception) { }
                    #endregion
                }
                else
                {
                    if (IsEditMode == false && EOVisitBO.CalendarEventId <= 0)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Please pass valid Calendar Event details.", ErrorLevel = ErrorLevel.Error
                        });
                    }
                    CalendarEventDB = null;
                }
                #endregion

                #region EO Visit
                if (EOVisitBO != null && ((EOVisitBO.ID <= 0 && (EOVisitBO.DoctorId.HasValue == true || EOVisitBO.PatientId.HasValue == true)) || (EOVisitBO.ID > 0)))
                {
                    bool Add_EOVisitDB = false;
                    EOVisitDB = _context.EOVisits.Where(p => p.ID == EOVisitBO.ID &&
                                                        (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false)))
                                .FirstOrDefault();

                    if (EOVisitDB == null && EOVisitBO.ID <= 0)
                    {
                        EOVisitDB     = new EOVisit();
                        Add_EOVisitDB = true;
                        sendMessage   = true;
                    }
                    else if (EOVisitDB == null && EOVisitBO.ID > 0)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Patient Visit doesn't exists.", ErrorLevel = ErrorLevel.Error
                        });
                    }

                    EOVisitDB.CalendarEventId = (CalendarEventDB != null && CalendarEventDB.Id > 0) ? CalendarEventDB.Id : ((EOVisitBO.CalendarEventId.HasValue == true) ? EOVisitBO.CalendarEventId.Value : EOVisitDB.CalendarEventId);

                    EOVisitDB.DoctorId  = IsEditMode == true && EOVisitBO.DoctorId.HasValue == false ? EOVisitDB.DoctorId : (EOVisitBO.DoctorId.HasValue == false ? EOVisitDB.DoctorId : EOVisitBO.DoctorId.Value);
                    EOVisitDB.PatientId = IsEditMode == true && EOVisitBO.PatientId.HasValue == false ? EOVisitDB.PatientId : (EOVisitBO.PatientId.HasValue == false ? EOVisitDB.PatientId : EOVisitBO.PatientId.Value);

                    EOVisitDB.InsuranceProviderId = IsEditMode == true && EOVisitBO.InsuranceProviderId.HasValue == false ? EOVisitDB.InsuranceProviderId : (EOVisitBO.InsuranceProviderId.HasValue == false ? EOVisitDB.InsuranceProviderId : EOVisitBO.InsuranceProviderId.Value);
                    EOVisitDB.EventStart          = EOVisitBO.EventStart;
                    EOVisitDB.EventEnd            = EOVisitBO.EventEnd;

                    EOVisitDB.Notes         = EOVisitBO.Notes;
                    EOVisitDB.VisitStatusId = EOVisitBO.VisitStatusId;

                    EOVisitDB.VisitCreatedByCompanyId = IsEditMode == true ? EOVisitDB.VisitCreatedByCompanyId : EOVisitBO.VisitCreatedByCompanyId.Value;

                    if (IsEditMode == false)
                    {
                        EOVisitDB.CreateByUserID = EOVisitBO.CreateByUserID;
                        EOVisitDB.CreateDate     = DateTime.UtcNow;
                    }
                    else
                    {
                        EOVisitDB.UpdateByUserID = EOVisitBO.UpdateByUserID;
                        EOVisitDB.UpdateDate     = DateTime.UtcNow;
                    }

                    if (Add_EOVisitDB == true)
                    {
                        EOVisitDB = _context.EOVisits.Add(EOVisitDB);
                    }
                    _context.SaveChanges();
                }
                else
                {
                    if (IsEditMode == false && IsAddModeCalendarEvent == false)
                    {
                        dbContextTransaction.Rollback();
                        return(new BO.ErrorObject {
                            errorObject = "", ErrorMessage = "Please pass valid Patient Visit details.", ErrorLevel = ErrorLevel.Error
                        });
                    }
                    EOVisitDB = null;
                }

                _context.SaveChanges();
                #endregion

                dbContextTransaction.Commit();

                if (EOVisitDB != null)
                {
                    EOVisitDB = _context.EOVisits.Include("CalendarEvent")
                                .Include("Doctor")
                                .Include("Patient")
                                .Include("Company")
                                .Include("InsuranceMaster")
                                .Where(p => p.ID == EOVisitDB.ID &&
                                       (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false)))
                                .FirstOrDefault <EOVisit>();
                }
                else if (CalendarEventDB != null)
                {
                    EOVisitDB = _context.EOVisits.Include("CalendarEvent")
                                .Where(p => p.CalendarEvent.Id == CalendarEventDB.Id &&
                                       (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false)))
                                .FirstOrDefault <EOVisit>();
                }
            }

            if (sendMessage == true)
            {
                try
                {
                    IdentityHelper identityHelper = new IdentityHelper();

                    User AdminUser = _context.Users.Include("ContactInfo").Include("UserCompanies").Include("UserCompanies.company")
                                     .Where(p => p.UserName == identityHelper.Email && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false)))
                                     .FirstOrDefault();

                    int currentCompanyType = _context.Companies.Where(p => p.id == EOVisitBO.VisitCreatedByCompanyId).Select(p1 => p1.CompanyType).FirstOrDefault();


                    List <User> lstStaff = _context.Users.Include("ContactInfo").Include("UserCompanies").Include("UserCompanies.company")
                                           .Where(p => p.UserType == 2 && p.UserCompanies.Where(p1 => p1.CompanyID == EOVisitBO.VisitCreatedByCompanyId && (p1.IsDeleted.HasValue == false || (p1.IsDeleted.HasValue == true && p1.IsDeleted.Value == false))).Any() && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false)))
                                           .ToList <User>();
                    User patientInfo = _context.Users.Include("ContactInfo").Include("UserCompanies").Include("UserCompanies.company")
                                       .Where(p => p.id == EOVisitBO.PatientId && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false)))
                                       .FirstOrDefault();

                    User doctorInfo = _context.Users.Include("ContactInfo").Include("UserCompanies").Include("UserCompanies.company")
                                      .Where(p => p.id == EOVisitBO.DoctorId && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false))).FirstOrDefault();

                    InsuranceMaster insuranceInfo = _context.InsuranceMasters
                                                    .Where(p => p.Id == EOVisitBO.InsuranceProviderId && (p.IsDeleted.HasValue == false || (p.IsDeleted.HasValue == true && p.IsDeleted.Value == false))).FirstOrDefault();


                    string MailMessageForPatient  = "<B> New Appointment Scheduled</B></ BR >Medical provider has scheduled a visit with Insurance Company: " + insuranceInfo.CompanyName + "<br><br>Thanks";
                    string NotificationForPatient = "Medical provider has scheduled a visit with Insurance Company: " + insuranceInfo.CompanyName;
                    string SmsMessageForPatient   = "<B> New Appointment Scheduled</B></ BR >Medical provider has scheduled a visit with Insurance Company: " + insuranceInfo.CompanyName + "<br><br>Thanks";

                    string MailMessageForDoctor  = "Appointment has been scheduled with Insurance Company: " + insuranceInfo.CompanyName + "<br><br>Thanks";
                    string NotificationForDoctor = "Appointment has been scheduled with Insurance Company: " + insuranceInfo.CompanyName;
                    string SmsMessageForDoctor   = "Appointment has been scheduled with Insurance Company: " + insuranceInfo.CompanyName + "<br><br>Thanks";

                    string MailMessageForStaff  = "";
                    string NotificationForStaff = "";
                    string SmsMessageForStaff   = "";
                    if (currentCompanyType == 2)
                    {
                        MailMessageForStaff  = "<B> New Appointment Scheduled</B></BR>A new Appointment schedule for patient : " + patientInfo.FirstName + " " + patientInfo.LastName + "  with Insurance Company" + insuranceInfo.CompanyName + "<br><br>Thanks";
                        NotificationForStaff = "New Appointment schedule for patient : " + patientInfo.FirstName + " " + patientInfo.LastName + "  with Insurance Company" + insuranceInfo.CompanyName;
                        SmsMessageForStaff   = "<B> New Appointment Scheduled</B></BR>A new Appointment schedule for patient : " + patientInfo.FirstName + " " + patientInfo.LastName + "  with Insurance Company" + insuranceInfo.CompanyName + "<br><br>Thanks";
                    }
                    else
                    {
                        MailMessageForStaff  = "<B> New Appointment Scheduled</B></BR>A new Appointment schedule for doctor : " + doctorInfo.FirstName + " " + doctorInfo.LastName + "  with Insurance Company" + insuranceInfo.CompanyName + "<br><br>Thanks";
                        NotificationForStaff = "New Appointment schedule for doctor : " + doctorInfo.FirstName + " " + doctorInfo.LastName + "  with Insurance Company" + insuranceInfo.CompanyName;
                        SmsMessageForStaff   = "<B> New Appointment Scheduled</B></BR>A new Appointment schedule for doctor : " + doctorInfo.FirstName + " " + doctorInfo.LastName + "  with Insurance Company" + insuranceInfo.CompanyName + "<br><br>Thanks";
                    }



                    #region  patient mail object
                    BO.EmailMessage emPatient = new BO.EmailMessage();
                    if (patientInfo != null)
                    {
                        emPatient.ApplicationName = "Midas";
                        emPatient.ToEmail         = patientInfo.UserName; //patientInfo.UserName;
                        emPatient.EMailSubject    = "MIDAS Notification";
                        emPatient.EMailBody       = MailMessageForPatient;
                    }
                    #endregion

                    #region patient sms object
                    BO.SMS smsPatient = new BO.SMS();
                    if (patientInfo != null)
                    {
                        smsPatient.ApplicationName = "Midas";
                        smsPatient.ToNumber        = patientInfo.ContactInfo.CellPhone;
                        smsPatient.Message         = SmsMessageForPatient;
                    }
                    #endregion



                    #region  doctor mail object
                    BO.EmailMessage emDoctor = new BO.EmailMessage();
                    if (doctorInfo != null)
                    {
                        emDoctor.ApplicationName = "Midas";
                        emDoctor.ToEmail         = doctorInfo.UserName; //doctorInfo.UserName;
                        emDoctor.EMailSubject    = "MIDAS Notification";
                        emDoctor.EMailBody       = MailMessageForDoctor;
                    }
                    #endregion

                    #region doctor sms object
                    BO.SMS smsDoctor = new BO.SMS();
                    if (doctorInfo != null)
                    {
                        smsDoctor.ApplicationName = "Midas";
                        smsDoctor.ToNumber        = doctorInfo.ContactInfo.CellPhone;
                        smsDoctor.Message         = SmsMessageForDoctor;
                    }
                    #endregion



                    NotificationHelper nh = new NotificationHelper();
                    MessagingHelper    mh = new MessagingHelper();

                    if (currentCompanyType == 2)   // 2 attorney
                    {
                        #region Patient
                        nh.PushNotification(patientInfo.UserName, AdminUser.UserCompanies.Select(p => p.Company.id).FirstOrDefault(), NotificationForPatient, "New Patient Registration");  //patientInfo.UserName for Patient user email
                        mh.SendEmailAndSms(patientInfo.UserName, AdminUser.UserCompanies.Select(p => p.Company.id).FirstOrDefault(), emPatient, smsPatient);
                        #endregion

                        foreach (var item in lstStaff)
                        {
                            #region  staff mail object
                            BO.EmailMessage emStaff = new BO.EmailMessage();
                            emStaff.ApplicationName = "Midas";
                            emStaff.ToEmail         = item.UserName;
                            emStaff.EMailSubject    = "MIDAS Notification";
                            emStaff.EMailBody       = MailMessageForStaff;
                            #endregion

                            #region admin sms object
                            BO.SMS smsStaff = new BO.SMS();
                            smsStaff.ApplicationName = "Midas";
                            smsStaff.ToNumber        = item.ContactInfo.CellPhone;
                            smsStaff.Message         = SmsMessageForStaff;
                            #endregion

                            nh.PushNotification(item.UserName, item.UserCompanies.Select(p => p.Company.id).FirstOrDefault(), NotificationForStaff, "New Appointment Schedule"); //item.UserName
                            mh.SendEmailAndSms(item.UserName, item.UserCompanies.Select(p => p.Company.id).FirstOrDefault(), emStaff, smsStaff);
                        }
                    }
                    else   // medical provider
                    {
                        #region Doctor
                        nh.PushNotification(doctorInfo.UserName, AdminUser.UserCompanies.Select(p => p.Company.id).FirstOrDefault(), NotificationForDoctor, "New Appointment Schedule");  //doctorInfo.UserName
                        mh.SendEmailAndSms(doctorInfo.UserName, AdminUser.UserCompanies.Select(p => p.Company.id).FirstOrDefault(), emDoctor, smsDoctor);
                        #endregion

                        foreach (var item in lstStaff)
                        {
                            #region  staff mail object
                            BO.EmailMessage emStaff = new BO.EmailMessage();
                            emStaff.ApplicationName = "Midas";
                            emStaff.ToEmail         = item.UserName;
                            emStaff.EMailSubject    = "MIDAS Notification";
                            emStaff.EMailBody       = MailMessageForStaff;
                            #endregion

                            #region staff sms object
                            BO.SMS smsStaff = new BO.SMS();
                            smsStaff.ApplicationName = "Midas";
                            smsStaff.ToNumber        = item.ContactInfo.CellPhone;
                            smsStaff.Message         = SmsMessageForStaff;
                            #endregion

                            nh.PushNotification(item.UserName, item.UserCompanies.Select(p => p.Company.id).FirstOrDefault(), NotificationForStaff, "New Appointment Schedule");
                            mh.SendEmailAndSms(item.UserName, item.UserCompanies.Select(p => p.Company.id).FirstOrDefault(), emStaff, smsStaff);
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }

            var res = ConvertEOvisit <BO.EOVisit, EOVisit>(EOVisitDB);
            return((object)res);
        }