public bool ChangePassword(UserDto userDto)
 {
     if (userDto != null)
     {
         using (EcommerceDB context = new EcommerceDB())
         {
             //var token = Request.Headers.Authorization.Parameter;
             //User User = AuthenticationBL.IsTokenValid(token);
             var user         = context.Users.FirstOrDefault(X => X.Id == userDto.Id);
             var passwordSalt = AuthenticationBL.CreatePasswordSalt(Encoding.ASCII.GetBytes(userDto.Password));
             user.PasswordSalt = Convert.ToBase64String(passwordSalt);
             var password = AuthenticationBL.CreateSaltedPassword(passwordSalt, Encoding.ASCII.GetBytes(userDto.Password));
             user.Password             = Convert.ToBase64String(password);
             context.Entry(user).State = EntityState.Modified;
             context.SaveChanges();
             return(true);
         }
     }
     return(false);
 }
        public bool ResetTroublePswd(UserDto dataDto)
        {
            if (dataDto != null)
            {
                using (EAharaDB context = new EAharaDB())
                {
                    var oldusr = context.Users.FirstOrDefault(x => x.IsActive && x.Id == dataDto.Id);
                    if (oldusr != null)
                    {
                        var passwordSalt = AuthenticationBL.CreatePasswordSalt(Encoding.ASCII.GetBytes(dataDto.Password));
                        oldusr.PasswordSalt = Convert.ToBase64String(passwordSalt);
                        var password = AuthenticationBL.CreateSaltedPassword(passwordSalt, Encoding.ASCII.GetBytes(dataDto.Password));
                        oldusr.Password = Convert.ToBase64String(password);

                        context.SaveChanges();
                        return(true);
                    }
                }
            }
            return(false);
        }
        public bool Addusers(UserDto dataDto)
        {
            if (dataDto != null)
            {
                using (EAharaDB context = new EAharaDB())
                {
                    if (dataDto.Id > 0)
                    {
                        var data = context.Users.FirstOrDefault(x => x.Id == dataDto.Id);
                        if (data != null)
                        {
                            data.UserName   = dataDto.UserName;
                            data.ShopId     = dataDto.ShopId;
                            data.EmployeeId = dataDto.EmployeeId;
                            data.MEDShopId  = dataDto.MEDShopId;
                            data.Role       = dataDto.Role;

                            if (dataDto.IsNotSkip != true)
                            {
                                var passwordSalt = AuthenticationBL.CreatePasswordSalt(Encoding.ASCII.GetBytes(dataDto.Password));
                                data.PasswordSalt = Convert.ToBase64String(passwordSalt);
                                var password = AuthenticationBL.CreateSaltedPassword(passwordSalt, Encoding.ASCII.GetBytes(dataDto.Password));
                                data.Password = Convert.ToBase64String(password);
                            }

                            context.Entry(data).Property(x => x.UserName).IsModified     = true;
                            context.Entry(data).Property(x => x.Password).IsModified     = true;
                            context.Entry(data).Property(x => x.PasswordSalt).IsModified = true;
                            context.Entry(data).Property(x => x.ShopId).IsModified       = true;
                            context.Entry(data).Property(x => x.EmployeeId).IsModified   = true;
                            context.Entry(data).Property(x => x.Role).IsModified         = true;
                            context.Entry(data).Property(x => x.MEDShopId).IsModified    = true;

                            context.SaveChanges();
                            return(true);
                        }
                        return(false);
                    }
                    else
                    {
                        var olduser = context.Users.FirstOrDefault(x => x.IsActive && x.UserName == dataDto.UserName);
                        if (olduser != null)
                        {
                            return(false);
                        }

                        User user = new User();

                        user.UserName   = dataDto.UserName;
                        user.ShopId     = dataDto.ShopId;
                        user.EmployeeId = dataDto.EmployeeId;
                        user.MEDShopId  = dataDto.MEDShopId;
                        user.Role       = dataDto.Role;
                        user.IsActive   = true;

                        var passwordSalt = AuthenticationBL.CreatePasswordSalt(Encoding.ASCII.GetBytes(dataDto.Password));
                        user.PasswordSalt = Convert.ToBase64String(passwordSalt);
                        var password = AuthenticationBL.CreateSaltedPassword(passwordSalt, Encoding.ASCII.GetBytes(dataDto.Password));
                        user.Password = Convert.ToBase64String(password);

                        context.Users.Add(user);
                        context.SaveChanges();
                        return(true);
                    }
                }
            }
            return(false);
        }
        public int RegisterCustomer(CustomerDto dataDto)
        {
            if (dataDto != null)
            {
                using (EAharaDB context = new EAharaDB())
                {
                    using (var transaction = context.Database.BeginTransaction())
                    {
                        try
                        {
                            var oldusr = context.Users.FirstOrDefault(x => x.IsActive && x.UserName == dataDto.UserName);
                            if (oldusr != null)
                            {
                                return(2);
                            }

                            Customer cus = new Customer();

                            cus.Name        = dataDto.Name;
                            cus.Email       = dataDto.Email;
                            cus.MobileNo    = dataDto.MobileNo;
                            cus.TelephoneNo = dataDto.TelephoneNo;
                            cus.Location    = dataDto.Location;
                            cus.CreatedDate = DateTime.Now;
                            cus.Address     = dataDto.Address;
                            cus.Photo       = dataDto.Photo;
                            cus.RefNo       = dataDto.RefNo;
                            cus.InstRefNo   = dataDto.InstRefNo;
                            cus.Points      = dataDto.Points;
                            cus.IsActive    = true;

                            var traceNumber = context.TraceNoes.FirstOrDefault(x => x.Type == "CU");
                            if (traceNumber == null)
                            {
                                traceNumber        = new TraceNo();
                                traceNumber.Type   = "CU";
                                traceNumber.Number = 10001;
                                context.TraceNoes.Add(traceNumber);
                            }
                            else
                            {
                                traceNumber.Number += 1;
                                context.Entry(traceNumber).Property(x => x.Number).IsModified = true;
                            }
                            cus.RefNo = traceNumber.Type + traceNumber.Number;

                            if (dataDto.InstRefNo != null && dataDto.InstRefNo != "")
                            {
                                var oldClient = context.Customers.FirstOrDefault(x => x.IsActive && x.RefNo == dataDto.InstRefNo);

                                if (oldClient != null)
                                {
                                    oldClient.Points = oldClient.Points + context.CompanyProfiles.FirstOrDefault().Points;
                                    context.Entry(oldClient).Property(x => x.Points).IsModified = true;
                                }
                            }

                            cus.Points = cus.Points + context.CompanyProfiles.FirstOrDefault().RegPoints;

                            context.Customers.Add(cus);
                            context.SaveChanges();

                            if (dataDto.CustomerMMethods.Count() > 0)
                            {
                                foreach (var mm in dataDto.CustomerMMethods)
                                {
                                    CustomerMMethod cmm = new CustomerMMethod();
                                    cmm.CustomerId = cus.Id;
                                    cmm.MMethodId  = mm.MMethodId;
                                    cmm.IsActive   = true;

                                    context.CustomerMMethods.Add(cmm);
                                }
                            }

                            Address add = new Address();
                            add.CustomerId  = cus.Id;
                            add.Description = cus.Address;
                            add.Location    = cus.Location;
                            add.Title       = "Default";
                            context.Addresses.Add(add);
                            context.SaveChanges();

                            User usr = new User();

                            usr.UserName = dataDto.UserName;
                            var passwordSalt = AuthenticationBL.CreatePasswordSalt(Encoding.ASCII.GetBytes(dataDto.Password));
                            usr.PasswordSalt = Convert.ToBase64String(passwordSalt);
                            var password = AuthenticationBL.CreateSaltedPassword(passwordSalt, Encoding.ASCII.GetBytes(dataDto.Password));
                            usr.Password   = Convert.ToBase64String(password);
                            usr.CustomerId = cus.Id;
                            usr.Role       = "Customer";
                            usr.IsActive   = true;

                            context.Users.Add(usr);
                            context.SaveChanges();
                            transaction.Commit();

                            return(1);
                        }
                        catch (Exception e)
                        {
                            transaction.Rollback();
                            return(0);
                        }
                    }
                }
            }
            return(0);
        }