public int checkLoginAvalability(int posId, string deviceCode, string userName, string password)
        {
            // 1 :  can login-
            //  0 : error
            // -1 : package is expired
            // -2 : device code is not correct
            // -3 : serial is not active
            // -4 : customer server code is wrong
            // -5 : login date is before last login date

            try
            {
                using (incposdbEntities entity = new incposdbEntities())
                {
                    //check support user
                    if (userName == "Support@Increase")
                    {
                        var suppUser = entity.users.Where(u => u.isActive == 1 && u.username == userName && u.password == password && u.isAdmin == true).FirstOrDefault();
                        if (suppUser != null)
                        {
                            return(1);
                        }
                    }
                    //compair login date with last login date for this user
                    var user = entity.users.Where(x => x.username == userName && x.password == password && x.isActive == 1).FirstOrDefault();
                    if (user != null)
                    {
                        var logs = entity.usersLogs.Where(x => x.userId == user.userId).OrderByDescending(x => x.sInDate).FirstOrDefault();
                        if (logs != null && logs.sInDate > DateTime.Now)
                        {
                            return(-5);
                        }
                    }
                    ActivateController ac = new ActivateController();
                    int active            = ac.CheckPeriod();
                    if (active == 0)
                    {
                        return(-1);
                    }
                    else
                    {
                        var tmpObject = entity.posSetting.Where(x => x.posId == posId).FirstOrDefault();
                        if (tmpObject != null)
                        {
                            // check customer code
                            if (tmpObject.posDeviceCode != deviceCode)
                            {
                                return(-2);
                            }
                            //check customer server code
                            ProgramDetailsController pc = new ProgramDetailsController();
                            var programD = pc.getCustomerServerCode();
                            if (programD == null || programD.customerServerCode != ac.ServerID())
                            {
                                return(-4);
                            }
                        }
                        // check serial && package avalilability
                        var serial         = entity.posSetting.Where(x => x.posId == posId && x.posSerials.isActive == true).FirstOrDefault();
                        var programDetails = entity.ProgramDetails.Where(x => x.isActive == true).FirstOrDefault();
                        if (serial == null || programDetails == null)
                        {
                            return(-3);
                        }
                    }

                    return(1);
                }
            }
            catch
            {
                return(0);
            }
        }