/// <summary>
        /// Add new installation to user
        /// </summary>
        /// <param name="UserId"></param>
        /// <param name="ApplicationId"></param>
        /// <param name="DeviceId"></param>
        /// <returns></returns>
        public Guid AddInstallation(int UserId , int ApplicationId, string DeviceId)
        {
            try
            {
                using (var dbContext = new ePharmaGuideContext())
                {
                    Installation InstallationResponse = dbContext.Installations.FirstOrDefault(b => b.UserId == UserId && b.ApplicationId == ApplicationId && b.DeviceIdentifier == DeviceId && b.isDisabled == false);
                    
                    if(InstallationResponse == null)
                    {
                        var NewInstallation = new Installation {

                            UserId = UserId,
                            DateCreated = DateTime.Now,
                            DateModified = DateTime.Now,
                            DeviceIdentifier = DeviceId,
                            ApplicationId = ApplicationId,
                            GUID = Guid.NewGuid()
                        };

                        dbContext.Installations.Add(NewInstallation);
                        dbContext.SaveChanges();
                        return NewInstallation.GUID;
                    }
                    return InstallationResponse.GUID;
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        public EnumTypes.UpdateAvailable checkForUpdate(Guid InstallationGUID, DateTime LastDateUpdated)
        {

            using (var dbContext = new ePharmaGuideContext())
            {
                int UserId = dbContext.Installations.FirstOrDefault(x => x.GUID == InstallationGUID && x.isDisabled == false).UserId;

                if(UserId == 0)
                {
                   return EnumTypes.UpdateAvailable.Invalid;
                }

                var getAllDataSet = (from x in dbContext.UserDataSets
                                    where x.UserId == UserId && x.isDisabled == false
                                    select x.DataSet).ToList();

                foreach (var item in getAllDataSet)
                {   
                   if(item.DatePublished > LastDateUpdated)
                    {
                        return EnumTypes.UpdateAvailable.UpdateAvailable;
                    }
                }
            }
            return EnumTypes.UpdateAvailable.UpdateNotAvailable; 
        }
        /// <summary>
        /// Check Download Token Status
        /// </summary>
        /// <param name="tokenId"></param>
        /// <returns></returns>
        public string TokenStatus(string tokenId)
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                var TokenTableObject =  dbContext.TokenTables.Where(x => x.TokenId == tokenId && x.IsDisabled == false ).FirstOrDefault();

                if(TokenTableObject == null)    //Check If Token Exist
                {
                    return null;
                }

                if(DateTime.Now > TokenTableObject.TokenGeneratedTime.AddMinutes(TokenTableObject.ValidityMinutes))  //Check If Token Valid
                {
                    return null;
                }


                InstallationRepo installationRepo = new InstallationRepo();   //Update Date Last Updated
                installationRepo.LastDateUpdated(TokenTableObject.InstallationGUID);

                TokenTableObject.IsDisabled = true;     //DisABLE tOKEN
                dbContext.Entry(TokenTableObject).State = System.Data.Entity.EntityState.Modified;
                dbContext.SaveChanges();
                return TokenTableObject.FilePath;

            }
        }
        /// <summary>
        /// Add Token To Database
        /// </summary>
        /// <param name="emailAddress"></param>
        /// <returns></returns>
        public string[] AddEmailVerificationToken(string emailAddress)
        {
                string[] RequestId = new string[3];

                EmailVerificationToken addTokenObject;
                using (var dbContext = new ePharmaGuideContext())
                {
                    string ModifiedGuid = Guid.NewGuid().ToString().Replace("-", string.Empty);

                    addTokenObject = new EmailVerificationToken
                    {
                        EmailId = emailAddress,
                        TokenGeneratedTime = DateTime.Now,
                        ValidityMinutes = ValidityMinutes,
                        TokenId = ModifiedGuid,
                        IsDisabled = false,
                    };

                    dbContext.EmailVerificationTokens.Add(addTokenObject);
                    dbContext.SaveChanges();
                }

                RequestId[0] = addTokenObject.TokenId;
                RequestId[1] = addTokenObject.EmailTokenId.ToString();
                return RequestId;

        }
        public bool ScratchCardComplementary(string CardNumber)
        {
            using (var dbContext = new ePharmaGuideContext())
            {

                return dbContext.ScratchCards.FirstOrDefault(x => x.CardNumber == CardNumber && x.isDisabled == false).isComplimentary;
            }
        }
 public string GetUserName(string emailAddress)    //To Show It in Email (Desktop)
 {
     using (var dbContext = new ePharmaGuideContext())
     {
         var UserObject = dbContext.UserProfiles.FirstOrDefault(x => x.AuthenId == emailAddress);
         return string.Format("{0} {1}",UserObject.FirstName,UserObject.LastName);
     }
 }
 public bool ScratchCardExist(string CardNumber, int AppId)
 {
     bool IsValid;
     using (var dbContext = new ePharmaGuideContext())
     {
         IsValid = dbContext.ScratchCards.Any(s => s.isDisabled == false && s.ExpiryDate > DateTime.Now && s.CardNumber == CardNumber && s.AppId == AppId);
     }
     return IsValid;
 }
        public void AddUserDataSet(int? UserId, int DataSetId, int ValidityPeriod, DateTime? UsedDateTime)
        {

            try
            {
                UserDataSet Uds;
                using (var dbContext = new ePharmaGuideContext())
                {
                    Uds = dbContext.UserDataSets.FirstOrDefault(s => s.DataSetId == DataSetId && s.UserId == UserId && s.isDisabled == false);

                    if (Uds == null)
                    {
                        var AddUserDataSet = new UserDataSet
                        {
                            DateCreated = DateTime.Now,
                            DateModified = DateTime.Now,
                            DateSubscribed = UsedDateTime.Value.AddDays(ValidityPeriod),
                            DataSetId = DataSetId,
                            UserId = UserId.Value,
                            ValidityPeriod = ValidityPeriod
                        };
                        dbContext.UserDataSets.Add(AddUserDataSet);
                        dbContext.SaveChanges();
                    }

                    else 
                    {
                        if (Uds.DateSubscribed < DateTime.Now || Uds.isDisabled)
                        {
                            Uds.DateSubscribed = DateTime.Now.AddDays(ValidityPeriod);
                            Uds.DateModified = DateTime.Now;
                            Uds.ValidityPeriod = ValidityPeriod;

                            dbContext.Entry(Uds).State = System.Data.Entity.EntityState.Modified;
                            dbContext.SaveChanges();
                        }

                        else
                        {
                            Uds.DateSubscribed = Uds.DateSubscribed.AddDays(ValidityPeriod);
                            Uds.DateModified = DateTime.Now;
                            Uds.ValidityPeriod = ValidityPeriod;

                            dbContext.Entry(Uds).State = System.Data.Entity.EntityState.Modified;
                            dbContext.SaveChanges();
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                throw;
            }
        }
 /// <summary>
 /// Set verification to true
 /// </summary>
 /// <param name="userId"></param>
 /// <sreturns></returns>
 public Boolean NumberVerifier(int userId)
 {
     using (var dbContext = new ePharmaGuideContext())
     {
         var userProfileObject = dbContext.UserProfiles.FirstOrDefault(x=> x.UserId == userId);
         userProfileObject.IsAuthenIdVerified = true;
         dbContext.Entry(userProfileObject).State = System.Data.Entity.EntityState.Modified;
         dbContext.SaveChanges();
         return userProfileObject.IsAuthenIdVerified;
     }
 }
        public int? GetUserId(Guid gUID, string DeviceId, int AppId)
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                Installation getObject = dbContext.Installations.FirstOrDefault(x => x.GUID == gUID && x.DeviceIdentifier == DeviceId && x.ApplicationId == AppId && x.isDisabled == false);

                if (getObject == null)
                    return null;

                return getObject.UserId;
            }
        }
 public int GetUserId(string AuthenId)                 //For Mobile and desktop
 {
     try
     {
         using (var dbContext = new ePharmaGuideContext())
         {
             UserProfile ResponseUser = dbContext.UserProfiles.FirstOrDefault(x => x.AuthenId == AuthenId && x.IsDisabled == false);
             return ResponseUser.UserId;
         }
     }
     catch (Exception ex)
     {
         throw;
     }
 }
        public Dictionary<string,string> GetCountry()
        {
         
            using (var dbContext = new ePharmaGuideContext())
            {
                var countryData = dbContext.Countries.OrderByDescending(x => x.IsPreferred).ToDictionary(x => x.CountryName.ToString(), x => x.CountryCode.ToString(), StringComparer.OrdinalIgnoreCase);
                
                if(countryData == null)
                {
                    return null;
                }

                return countryData;
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        public string DisableInstallation(Guid guid)
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                var installationObject = dbContext.Installations.FirstOrDefault(x => x.GUID == guid && x.isDisabled == false);

                if(installationObject == null)
                {
                    return "Installation Not Exist";
                }

                installationObject.isDisabled = true;
                dbContext.Entry(installationObject).State = System.Data.Entity.EntityState.Modified;
                dbContext.SaveChanges();
                return null;
            }
        }
        public EnumTypes.ScratchCardUsed ScratchCardUsed(int UserId, string CardNumber)
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                var GetUserId = dbContext.ScratchCards.FirstOrDefault(s => s.CardNumber == CardNumber && s.isDisabled == false);                

                if (GetUserId.UserId == UserId)
                {
                    return EnumTypes.ScratchCardUsed.UsedBySame;
                }

                else if (GetUserId.UserId == null)
                {
                    return EnumTypes.ScratchCardUsed.NotUsed;
                }

                return EnumTypes.ScratchCardUsed.UsedByOther;
            }
        }
        public void AddData(int UserId, int DataSetId)
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                UserDataSet Uds;

                var AddUserDataSet = new UserDataSet
                {
                    DateCreated = DateTime.Now,
                    DateModified = DateTime.Now,
                    DateSubscribed = new DateTime(4015, 12, 1),
                    DataSetId = DataSetId,
                    UserId = UserId,
                    ValidityPeriod = -1
                };
                dbContext.UserDataSets.Add(AddUserDataSet);
                dbContext.SaveChanges();
            }
        }
        public List<int> GetUserDataset(int userId)
        {
            List<int> getUserDataSet;
            using (var dbContext = new ePharmaGuideContext())
            {
                var getUserDatasetObjects = dbContext.UserDataSets.Where(x => x.UserId == userId && x.DateSubscribed > DateTime.Now && x.ValidityPeriod != -1 && x.isDisabled == false).ToList();

                if (getUserDatasetObjects.Count == 0)
                    return null;

                getUserDataSet = new List<int>();
                foreach (var item in getUserDatasetObjects)
                {
                    getUserDataSet.Add(item.DataSetId);
                }
            }
            return getUserDataSet;

        }
        public bool DeleteFreeData(int userId)
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                List<UserDataSet> getFreeDataset = dbContext.UserDataSets.Where(x => x.UserId == userId && x.ValidityPeriod == -1 && x.isDisabled == false).ToList();

                if(getFreeDataset == null || getFreeDataset.Count == 0)
                {
                    return true;
                }

                foreach (var item in getFreeDataset)
                {
                    dbContext.Entry(item).State = System.Data.Entity.EntityState.Deleted;
                    dbContext.SaveChanges();
                }

                return true;
            }
        }
        public ScratchCard AddToScratchCard(string CardNumber, int UserId, int AppId)
        {
            UserProfile userVerify;
            ScratchCard sc;
            using (var dbContext = new ePharmaGuideContext())
            {
                sc = dbContext.ScratchCards.FirstOrDefault(s => s.CardNumber == CardNumber && s.isDisabled == false);
            }

            if (sc != null)
            {
                sc.DateUsed = DateTime.Now;
                sc.UserId = UserId;
                sc.isUsed = true;
                sc.DateModified = DateTime.Now;

                using (var dbContext = new ePharmaGuideContext())
                {
                    userVerify = dbContext.UserProfiles.FirstOrDefault(x=>x.UserId == sc.UserId && x.IsDisabled == false);
                    userVerify.IsAuthenIdVerified = true;
                    dbContext.Entry(userVerify).State = System.Data.Entity.EntityState.Modified;
                    dbContext.SaveChanges();
                }
            }

            using (var dbContext = new ePharmaGuideContext())
            {
                dbContext.Entry(sc).State = System.Data.Entity.EntityState.Modified;
                dbContext.SaveChanges();

                List<Installation> GetInstallations = dbContext.Installations.Where(x => x.UserId == UserId && x.ApplicationId == AppId && x.isDisabled == false).ToList();

                if(GetInstallations.Count >= 3 )
                {
                    GetInstallations[0].isDisabled = true;
                    dbContext.SaveChanges();
                }
            }
            return sc;
        }
        /// <summary>
        /// Add Token To Database
        /// </summary>
        /// <param name="gUID"></param>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public string AddToDatabase(Guid gUID, string filePath)
        {
            TokenTable addTokenObject;
            using (var dbContext = new ePharmaGuideContext())
            {
                string ModifiedGuid = Guid.NewGuid().ToString().Replace("-", string.Empty);

                addTokenObject = new TokenTable
                {
                    FilePath = filePath,
                    TokenGeneratedTime = DateTime.Now,
                    ValidityMinutes = ValidityMinutes,
                    TokenId = ModifiedGuid,
                    InstallationGUID = gUID,
                    IsDisabled = false
                };

                dbContext.TokenTables.Add(addTokenObject);
                dbContext.SaveChanges();
            }
            return addTokenObject.TokenId;
        }
        public int? ValidateInstallation(Guid InstallationGUID, string DeviceIdentifier, int AppId)
        {
            try
            {
                using (var dbContext = new ePharmaGuideContext())
                {
                    Installation ResponseUser = dbContext.Installations.FirstOrDefault(x => x.GUID == InstallationGUID && x.DeviceIdentifier == DeviceIdentifier && x.ApplicationId == AppId && x.isDisabled ==false);

                    if (ResponseUser == null)
                    {
                        return null;
                    }
                    return ResponseUser.UserId;
                }
            }

            catch (Exception ex)
            {
                throw;
            }

        }
        /// <summary>
        /// Check If Token Valid From Database andmarked verified if Valid Token
        /// </summary>
        /// <param name="tokenId"></param>
        /// <returns></returns>
        public string EmailVerifyTokenChecker(string tokenId)
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                var TokenTableObject = dbContext.EmailVerificationTokens.Where(x => x.TokenId == tokenId && x.IsDisabled == false).FirstOrDefault();

                if (TokenTableObject == null)    //Check If Token Exist
                {
                    var CheckIfAlreadyVerified = dbContext.EmailVerificationTokens.Where(x => x.TokenId == tokenId && x.IsDisabled == true).FirstOrDefault();  //Check if token Already verified

                    if(CheckIfAlreadyVerified == null)
                    {
                        return null;            //Means Token Not Generated
                    }

                    return "Your Account is already Subscribed";

                }

                if (DateTime.Now > TokenTableObject.TokenGeneratedTime.AddMinutes(TokenTableObject.ValidityMinutes))  //Check If Token Valid
                {
                    return null;
                }


                UserProfileRepo userProfileRepo = new UserProfileRepo();   //Update Is Authen Verified
                bool IsValid = userProfileRepo.SetIsAuthenVerified(TokenTableObject.EmailId);

                if(!IsValid)
                {
                    return null;
                }

                TokenTableObject.IsDisabled = true;     //Disable Token means Verified
                dbContext.Entry(TokenTableObject).State = System.Data.Entity.EntityState.Modified;
                dbContext.SaveChanges();
                return "Thank You for Confirming Your Email";
            }
        }
        public bool IsInstallationEnable(Guid InstallationGUID)
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                Installation valid = dbContext.Installations.FirstOrDefault(x => x.GUID == InstallationGUID && x.isDisabled == false);

                if (valid == null)
                {
                    return false;
                }
                return true;
            }
        }
        public UserProfile AuthenNumber(string AuthenId)     //For Mobile and Desktop
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                var UserProfile = dbContext.UserProfiles.FirstOrDefault(x => x.AuthenId == AuthenId && x.IsDisabled == false);

                if (UserProfile != null)
                {
                    var UserDatSets = UserProfile.UserApps;
                }
                return UserProfile;
            }
        }
        public void LastDateUpdated(Guid guid)
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                var installationObject = dbContext.Installations.FirstOrDefault(x=> x.isDisabled == false && x.GUID == guid);

                if (installationObject == null)
                    return;

                installationObject.DataLastDownloaded = DateTime.Now;
                dbContext.Entry(installationObject).State = System.Data.Entity.EntityState.Modified;
            }
        }
        }   //for Mobile and Desktop

        public bool SetIsAuthenVerified(string Email)    //For Desktop Only
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                var userProfileObject = dbContext.UserProfiles.FirstOrDefault(x => x.IsDisabled == false && x.AuthenId == Email);

                if (userProfileObject == null)
                {
                    return false;
                }

                userProfileObject.IsAuthenIdVerified = true;
                dbContext.Entry(userProfileObject).State = System.Data.Entity.EntityState.Modified;
                dbContext.SaveChanges();
                return true;
            }
        }
        public bool AddUserByAuthenId(string email, string profession, string firstName, string lastName, string phoneNumber , int ApplicationId)
        {
            UserProfile userProfile;
            using (var dbContext = new ePharmaGuideContext())
            {
                userProfile = dbContext.UserProfiles.FirstOrDefault(x => x.AuthenId == phoneNumber && x.IsDisabled == false);

                //If no profile exist create new
                if (userProfile == null)
                {
                    if(ApplicationId == 1)
                    {
                        userProfile = new UserProfile()
                        {
                            AuthenId = phoneNumber,
                        };
                    }

                    else
                    {
                        userProfile = new UserProfile()
                        {
                            AuthenId = email,
                        };
                    }

                    userProfile.EmailAddress = email;
                    userProfile.Profession = profession;
                    userProfile.FirstName = firstName;
                    userProfile.LastName = lastName;
                    userProfile.DateCreated = DateTime.Now;
                    userProfile.DateModified = DateTime.Now;
                    userProfile.PhoneNumber = phoneNumber;

                    dbContext.UserProfiles.Add(userProfile);
                    dbContext.SaveChanges();
                    return true;
                }

                //Check if account is verified cant create new one
                if (userProfile.IsAuthenIdVerified)
                {
                    return false;
                }

                userProfile.EmailAddress = email;
                userProfile.Profession = profession;
                userProfile.FirstName = firstName;
                userProfile.LastName = lastName;
                userProfile.DateCreated = DateTime.Now;
                userProfile.DateModified = DateTime.Now;
                userProfile.AuthenId = phoneNumber;
                userProfile.PhoneNumber = phoneNumber;

                dbContext.Entry(userProfile).State = System.Data.Entity.EntityState.Modified;
                dbContext.SaveChanges();
            }
            return true;

        }   //for Mobile and Desktop
        public JsonDatasetModel GetData(List<int> dataSetId, string filePath)
        {
            bool isDataSetValid = false;

            using (var dbContext = new ePharmaGuideContext())
            {
                foreach (var item in dataSetId)
                {
                    isDataSetValid = dbContext.DataSets.Any(ds => ds.DataSetId == item && ds.IsDisabled == false);

                    if (!isDataSetValid)
                        return null;
                }
            }

            using (var db = new ePharmaGuideContext())
            {
                string joinDatasetId = string.Join(",", dataSetId);

                // BrandGeneric against DataSet.
                string brandGenericsQuery = string.Format("SELECT DISTINCT [BrandGenericId] as a, [BrandId] as b, [GenericId] as c, [DataSubsetId] as d FROM [dbo].[BrandGenericSet] WHERE DataSetId IN ({0})", joinDatasetId);
                var brandGenerics = db.Database.SqlQuery<BrandGenericSet>(brandGenericsQuery).ToList();

                // Catergories against DataSet.
                string categoriesQuery = string.Format("SELECT DISTINCT [CategoryId] as a, [CategoryName] as b FROM [dbo].[CategorySet]  WHERE DataSetId IN ({0})", joinDatasetId);
                var categories = db.Database.SqlQuery<CategorySet>(categoriesQuery).ToList();

                //  InteractionDetail against DataSet.
                string interactionDetailsQuery = string.Format("SELECT DISTINCT [InteractionDetailId] as a, [InteractionMasterId] as b , [GenericId] as c, [InteractionGroup] as d FROM [dbo].[InteractionDetailSet] WHERE DataSetId IN ({0})", joinDatasetId);
                var interactionDetrails = db.Database.SqlQuery<InteractionDetailSet>(interactionDetailsQuery).ToList();

                // InteractionMaster against DataSet.
                string interactionMastersQuery = string.Format("SELECT DISTINCT [InteractionMasterId] as a, [Severity] as b, [Effect] as c, [Mechanism] as d, [Management] as e , [BookReference] as f FROM [dbo].[InteractionMasterSet] WHERE DataSetId IN ({0})", joinDatasetId);
                var interactionMasters = db.Database.SqlQuery<InteractionMasterSet>(interactionMastersQuery).ToList();

                // ItemCategory against DataSet.
                string itemCategoriesQuery = string.Format("SELECT DISTINCT [ItemCategoryId] as a, [TherapeuticId] as b, [ContentId] as c, [DrugCategoryId] as d, [IsBrandwise] as e FROM [dbo].[ItemCategorySet] WHERE DataSetId IN ({0})", joinDatasetId);
                var itemCategories = db.Database.SqlQuery<ItemCategorySet>(itemCategoriesQuery).ToList();

                // ItemPrice against DataSet.
                string itemPricesQuery = string.Format("SELECT DISTINCT [ItemPriceId] as a,[ItemId] as b ,[TradePrice] as c ,[RetailPrice] as d ,[InPatientPrice] as e ,[AutoUpdatePrice] as f ,[DataSubsetId] as g FROM [dbo].[ItemPriceSet] WHERE DataSetId IN ({0})", joinDatasetId);
                var itemPrices = db.Database.SqlQuery<ItemPriceSet>(itemPricesQuery).ToList();

                // Item against DataSet.
                string itemsQuery = string.Format("SELECT DISTINCT [ItemId] as a ,[CompanyId] as b ,[BrandId] as c ,[BrandExtension] as d ,[RegistrationNumber] as e ,[DosageForm] as f ,[DosageFormExtension] as g,[Strength] as h ,[PackSize] as i ,[ItemCategoryId] as j FROM [dbo].[ItemSet] WHERE DataSetId IN ({0})", joinDatasetId);
                var items = db.Database.SqlQuery<ItemSet>(itemsQuery).ToList();

                foreach (var item in items)
                {
                    if(item.a == 44611)
                    {

                    }
                }


                // Prescription against DataSet.
                string prescriptionsQuery = string.Format("SELECT DISTINCT [PrescriptionId] as a,[ItemCategoryId] as b ,[PrescriptionTypeId] as c ,[PrescriptionText] as d FROM [dbo].[PrescriptionSet] WHERE DataSetId IN ({0})", joinDatasetId);
                var prescriptions = db.Database.SqlQuery<PrescriptionSet>(prescriptionsQuery).ToList();

                var prescriptionTypes = db.PrescriptionTypes.ToList();

                var dataSubSets = db.DataSubsets.Where(x => dataSetId.Contains(x.DataSetId)).ToList();

                var dataSets = db.DataSets.Where(x => dataSetId.Contains(x.DataSetId)).ToList();

                var jsonDataSet = new JsonDatasetModel();
                jsonDataSet.BrandGenerics = brandGenerics;
                jsonDataSet.Categories = categories;
                jsonDataSet.InteractionDetails = interactionDetrails;
                jsonDataSet.InteractionMasters = interactionMasters;
                jsonDataSet.ItemCategories = itemCategories;
                jsonDataSet.ItemPrices = itemPrices;
                jsonDataSet.Items = items;
                jsonDataSet.Prescriptions = prescriptions;

                jsonDataSet.PrescriptionTypes = new List<PrescriptionTypeModel>();
                foreach (var item in prescriptionTypes)
                {
                    jsonDataSet.PrescriptionTypes.Add(new PrescriptionTypeModel()
                    {
                        a = item.PrescriptionTypeId,
                        d = item.TypeColour,
                        b = item.TypeName,
                        c = item.TypeSequence
                    });
                }

                jsonDataSet.DataSubsets = new List<DataSubsetModel>();
                foreach (var item in dataSubSets)
                {
                    jsonDataSet.DataSubsets.Add(new DataSubsetModel()
                    {

                        a = item.DataSubsetId,
                        b = item.DataSetId,
                        d = item.DataSubsetCurrency,
                        c = item.DataSubsetName,
                        i = item.DateCreated,
                        e = item.DateLastUpdated,
                        j = item.DateModified,
                        f = item.DatePublished,
                        h = item.isDisabled,
                        g = item.Remarks
                    });
                }
                return jsonDataSet;
            }
        }
        public List<DataSetIdName> GetAllDataSet(int AppId)
        {
            List<DataSetIdName> collectionOfDataset = new List<DataSetIdName>();
            using (var dbContext = new ePharmaGuideContext())
            {
                var dataSet = dbContext.DataSets.Where(x => x.ValidityPeriod == -1 && x.IsDisabled == false).ToList();

                if(dataSet == null)
                {
                    return null;
                }


                foreach (var item in dataSet)
                {
                    DataSetIdName ds = new DataSetIdName()
                    {
                        DatasetId = item.DataSetId,
                        DatasetName = item.DataSetTitle
                    };

                    if (item.Datasubsets != null && item.Datasubsets.Count > 1)
                    {
                        ds.DataSubsets = (from x in item.Datasubsets
                                          select new DataSetIdName
                                          {
                                              DatasetId = x.DataSubsetId,
                                              DatasetName = x.DataSubsetName
                                          }).ToList();
                    }
                    collectionOfDataset.Add(ds);
                }
            }
            return collectionOfDataset;
        }
        public void DateLastPublished(int DataSetId)
        {
            using (var dbContext = new ePharmaGuideContext())
            {
                var dataSetObject = dbContext.DataSets.FirstOrDefault(x=>x.DataSetId == DataSetId && x.IsDisabled == false);

                if(dataSetObject == null)
                {
                    return;
                }

                dataSetObject.DateModified = DateTime.Now;
                dataSetObject.DatePublished = DateTime.Now;

                dbContext.Entry(dataSetObject).State = System.Data.Entity.EntityState.Modified;
                dbContext.SaveChanges();
            }
        }
 public Installation GetGuid(int userId , string deviceId , int appId)
 {
     using (var dbContext = new ePharmaGuideContext())
     {
         var getGUID = dbContext.Installations.FirstOrDefault(x => x.ApplicationId == appId && x.DeviceIdentifier == deviceId && x.UserId == userId && x.isDisabled == false);
         return getGUID;
     }
 }