public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    await UserManager.AddToRoleAsync(user.Id, "Employee");

                    HolidayManagementContext db = new HolidayManagementContext();
                    UserDetails nuser           = new UserDetails
                    {
                        LastName  = model.LastName,
                        FirstName = model.FirstName,
                        UserID    = user.Id
                    };

                    db.UserDetailsModel.Add(nuser);
                    db.SaveChanges();

                    //Regisztracio utan atiranyitas,Login-t 464.sorban
                    return(RedirectToAction("Index", "Dashboard"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Esempio n. 2
0
        public ActionResult AddHoliday(Vacation model)
        {
            string message = "";
            bool   succes  = false;

            HolidayManagementContext database     = new HolidayManagementContext();
            VacationRepository       vacationrepo = new VacationRepository();

            var UserId = User.Identity.GetUserId();
            UserDetailsRepository udr = new UserDetailsRepository();
            var userDetails           = udr.GetUserDetailsByUserId(UserId);

            model.Date    = DateTime.Now;
            model.StateId = 1;
            model.UserId  = userDetails.ID;

            database.Vacations.Add(model);

            message = validateVacation(model);
            if (message == null)
            {
                database.SaveChanges();
                succes = true;
            }
            else
            {
                succes = false;
            }



            return(Json(new { successed = succes, Message = message, newUser = model }, JsonRequestBehavior.DenyGet));
        }
        public ActionResult EditUser(UserDetails model)
        {
            string message   = "ok";
            bool   successed = true;

            using (HolidayManagementContext db = new HolidayManagementContext())
            {
                //Id megkeresese alapjan visszateriti a modelt
                var user = db.UserDetailsModel.FirstOrDefault(x => x.ID == model.ID);

                user.LastName          = model.LastName;
                user.FirstName         = model.FirstName;
                user.AspnetUsers.Email = model.AspnetUsers.Email;
                user.HireDate          = model.HireDate;
                user.MaxDays           = model.MaxDays;
                user.Team = model.Team;

                db.SaveChanges();
            }

            UserDetailsRepository UDR = new UserDetailsRepository();
            var res = new { Success = successed, EMessage = message, usersList = UDR.GetUsers() };//

            return(Json(res, JsonRequestBehavior.DenyGet));
        }
        public ActionResult EditUser(UserDetails model, string rolesName)
        {
            // List<string> m = new List<string>();
            string message = "Succes";
            bool   succes  = false;
            HolidayManagementContext database = new HolidayManagementContext();

            try
            {
                var user = database.UserDetails.FirstOrDefault(x => x.AspnetUsers.Email == model.AspnetUsers.Email);
                if (user != null)
                {
                    user.FirstName            = model.FirstName;
                    user.LastName             = model.LastName;
                    user.HireDate             = model.HireDate;
                    user.AspnetUsers.Email    = model.AspnetUsers.Email;
                    user.AspnetUsers.UserName = model.AspnetUsers.Email;
                    user.MaxDays = model.MaxDays;
                    database.SaveChanges();
                    succes = true;
                }
                else
                {
                    message = "User not found";
                }
            }
            catch (Exception ex)
            {
                message = ex.ToString();
            }
            return(Json(new { successed = succes, Message = message, newUser = model }, JsonRequestBehavior.DenyGet));
        }
        public async Task <ActionResult> CreateUser(UserDetails model, string rolesID)
        {
            string message = "";
            bool   succes  = false;
            var    user    = new ApplicationUser {
                UserName = model.AspnetUsers.Email, Email = model.AspnetUsers.Email
            };
            var result = await UserManager.CreateAsync(user, "Password1!");



            if (result.Succeeded)
            {
                await UserManager.AddToRoleAsync(user.Id, rolesID);

                HolidayManagementContext database = new HolidayManagementContext();
                model.AspnetUsers = null;
                model.UserID      = user.Id;
                database.UserDetails.Add(model);
                database.SaveChanges();
                succes = true;
            }
            else
            {
                message = result.Errors.ToArray()[0];
            }
            return(Json(new { successed = succes, Message = message, newUser = model },  JsonRequestBehavior.DenyGet));
        }
        public async Task <ActionResult> CreateUser(UserDetails model)
        {
            bool   successed;
            string message = "";
            var    user    = new ApplicationUser {
                UserName = model.AspNetUser.Email, Email = model.AspNetUser.Email
            };
            var result = await UserManager.CreateAsync(user, "Password1!");

            HolidayManagementContext newdb = new HolidayManagementContext();

            if (result.Succeeded)
            {
                model.AspNetUser = null;
                model.UserID     = user.Id;
                newdb.UserDetails.Add(model);
                newdb.SaveChanges();
                successed = true;
            }
            else
            {
                message   = "Email is used";
                successed = false;
            }

            return(Json(new { successed = successed, Message = message, newUser = model },  JsonRequestBehavior.DenyGet));
        }
Esempio n. 7
0
        public async Task <ActionResult> CreateUser(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };


                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    HolidayManagementContext newHolidayManagementContext = new HolidayManagementContext();
                    UserDetails ud = new UserDetails()
                    {
                        FirstName = model.FirstName, LastName = model.LastName, UserID = user.Id
                    };

                    newHolidayManagementContext.UserDetails.Add(ud);

                    newHolidayManagementContext.SaveChanges();
                    return(Json(new { successed = true, messages = "No errors", newUser = ud }, JsonRequestBehavior.DenyGet));
                }
                return(Json(new { successed = false, messages = "The email address is already in use!" }, JsonRequestBehavior.DenyGet));
                //AddErrors(result);
            }
            return(Json(new { successed = false, messages = "Model state is invalid" }, JsonRequestBehavior.DenyGet));
        }
Esempio n. 8
0
        //EditUser action
        public async Task <ActionResult> EditUser(UserDetails model, string ManageUserRoleID)
        {
            bool                     successedd = true;
            List <string>            messagess  = new List <string>();
            HolidayManagementContext newDB      = new HolidayManagementContext();
            var   user = newDB.UserDetails.FirstOrDefault(c => c.ID == model.ID);
            Regex reg  = new Regex("^([A-Za-z]+['.]?[ ]?|[A-Za-z]+['-]?)+$", RegexOptions.Compiled);

            if (!reg.IsMatch(model.LastName) || (model.LastName == null))
            {
                successedd = false;
                messagess.Add("Bad LastName\r\n");
            }

            if (!reg.IsMatch(model.FirstName) || (model.FirstName == null))
            {
                successedd = false;
                messagess.Add("Bad FirstName\r\n");
            }
            if (successedd)
            {
                //email address validation
                var check = newDB.UserDetails.FirstOrDefault(d => d.AspNetUser.Email == model.AspNetUser.Email);
                if ((check == null) || (check.ID == model.ID))
                {
                    user.LastName         = model.LastName;
                    user.AspNetUser.Email = model.AspNetUser.Email;
                    user.FirstName        = model.FirstName;
                    user.HireDate         = model.HireDate;
                    user.MaxDays          = model.MaxDays;
                    user.TeamId           = model.TeamId;
                    newDB.SaveChanges();
                    //get the list of the roles
                    var list = newDB.Roles.ToList();
                    //define new role
                    var name = list.FirstOrDefault(x => x.Id == ManageUserRoleID);
                    //find user roles
                    var roles = await UserManager.GetRolesAsync(user.AspNetUser.Id);

                    //delete user role
                    await UserManager.RemoveFromRolesAsync(user.UserID, roles.ToArray());

                    //add new role
                    await UserManager.AddToRoleAsync(user.AspNetUser.Id, name.Name);
                }
                else
                {
                    successedd = false;
                    messagess.Add("Bad Email");
                }
            }


            UserDetailsRepository userdr = new UserDetailsRepository();

            return(Json(new { successed = successedd, messages = messagess, userLst = userdr.GetUsers() }, JsonRequestBehavior.DenyGet));
        }
Esempio n. 9
0
        private int?maxdays()
        {
            HolidayManagementContext database = new HolidayManagementContext();
            var manager     = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(ApplicationDbContext.Create()));
            var currentUser = manager.FindById(User.Identity.GetUserId()).Id;
            var user        = database.UsersDetails.FirstOrDefault(i => i.UID == currentUser);
            var maxday      = user.MaxDays;

            return(maxday);
        }
        public async Task <ActionResult> AddHoliday(Vacation model)
        {
            HolidayManagementContext newdb = new HolidayManagementContext();
            var user = newdb.Vacations;

            if (user != null)
            {
            }

            return(Json(new { successed = true, newUser = model }, JsonRequestBehavior.DenyGet));
        }
        public async Task <ActionResult> CreateUser(UserDetails model)
        {
            string message   = "ok";
            bool   successed = true;

            var user = new ApplicationUser {
                UserName = model.AspnetUsers.Email, Email = model.AspnetUsers.Email
            };

            var result = await UserManager.CreateAsync(user, "Password1!");

            if (result.Succeeded)
            {
                using (HolidayManagementContext db = new HolidayManagementContext())
                {
                    if (model.AspnetUsers != null && model.AspnetUsers.Roles.Count() > 0)
                    {
                        var roleID = model.AspnetUsers.Roles.FirstOrDefault().RoleId;

                        var role = db.Roles.FirstOrDefault(x => x.Id == roleID);

                        if (role != null)
                        {
                            await UserManager.AddToRoleAsync(user.Id, role.Name);
                        }
                    }
                    model.AspnetUsers = null;
                    model.UserID      = user.Id;

                    //   db.UserDetails.Add(model);
                    db.UserDetailsModel.Add(model);
                    try
                    {
                        db.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        successed = false;
                        message   = "Save Error";
                    }
                }
            }
            else
            {
                successed = false;
                message   = result.Errors.ToArray()[0];
            }
            var res = new { Success = successed, EMessage = message, newUser = model };

            return(Json(res, JsonRequestBehavior.DenyGet));
        }
Esempio n. 12
0
        public ActionResult Accept(Vacation data)
        {
            HolidayManagementContext database = new HolidayManagementContext();
            bool success  = false;
            var  message  = "";
            var  vacation = database.Vacations.FirstOrDefault(i => i.ID == data.ID);

            vacation.StateId = 2;

            database.SaveChanges();
            success = true;
            var vacations = CreateVacationList();

            return(Json(new { success = success, messages = message, vac = vacations }, JsonRequestBehavior.DenyGet));
        }
Esempio n. 13
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                //Create a new user and async password with username
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                //initiate a new instance of HolidayManagementContext
                HolidayManagementContext newDB = new HolidayManagementContext();

                //Change input, store the new information in the UserDetails
                UserDetails newUser = new UserDetails
                {
                    UserID    = user.Id,
                    LastName  = model.LastName,
                    FirstName = model.FirstName,
                };

                //insert in db
                newDB.UserDetails.Add(newUser);

                //commit
                newDB.SaveChanges();
                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    await UserManager.AddToRoleAsync(user.Id, "Employee");

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");


                    //if the register had succes, then go to the dashboard controller index method
                    return(RedirectToAction("Index", "Dashboard"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Esempio n. 14
0
        private int actuservacations()
        {
            HolidayManagementContext database = new HolidayManagementContext();
            var manager             = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(ApplicationDbContext.Create()));
            var currentUser         = manager.FindById(User.Identity.GetUserId()).Id;
            var user                = database.UsersDetails.FirstOrDefault(i => i.UID == currentUser);
            var actualuservacations = database.Vacations.Where(i => i.StateId != 3 && i.UserId == user.ID);
            int sumdays             = 0;

            foreach (var act in actualuservacations)
            {
                sumdays += act.Vacationsdays;
            }

            return(sumdays);
        }
        public async Task <ActionResult> CreateUser(UserDetails data)
        {
            bool success = false;
            HolidayManagementContext database = new HolidayManagementContext();

            var email = data.IdentityUser.Email;

            var message = "";
            var user    = new ApplicationUser {
                UserName = email, Email = email
            };
            var result = await UserManager.CreateAsync(user, "Password1!");

            var newUser = new UserDetails();

            if (result.Succeeded)
            {
                data.UID = user.Id;


                newUser = data;

                if (data.IdentityUser != null && data.IdentityUser.Roles.Count() > 0)
                {
                    var seged = data.IdentityUser.Roles.First().RoleId;
                    var role  = database.Roles.FirstOrDefault(r => r.Id == seged);

                    if (role != null)
                    {
                        await UserManager.AddToRoleAsync(data.UID, role.Name);
                    }
                }
                data.IdentityUser = null;
                database.UsersDetails.Add(data);
                database.SaveChanges();
                success = true;
            }
            else
            {
                message = "Email already exist";
            }


            return(Json(new { success = success, messages = message, newUser = newUser },  JsonRequestBehavior.DenyGet));
        }
Esempio n. 16
0
        private List <Vacation> CreateVacationList()
        {
            List <Vacation> vacationlist       = new List <Vacation> {
            };
            VacationRepository       vacations = new VacationRepository();
            HolidayManagementContext database  = new HolidayManagementContext();
            var vac = vacations.GetVacations();

            foreach (var v in vac)
            {
                if (v.StateId == 1 || v.StateId == 4)
                {
                    vacationlist.Add(v);
                }
            }

            return(vacationlist);
        }
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    await UserManager.AddToRoleAsync(user.Id, "Employee");

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");


                    //Sikeres bejentkezes-->Adatbazisba az adatok
                    HolidayManagementContext database = new HolidayManagementContext();
                    UserDetails newUser = new UserDetails();
                    newUser.FirstName = model.FirstName;
                    newUser.LastName  = model.LastName;
                    newUser.UserID    = user.Id;

                    database.UserDetails.Add(newUser);
                    database.SaveChanges();

                    return(RedirectToAction("Index", "Dashboard"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        public async Task <ActionResult> CreateUser(UserDetails model)
        {
            bool   successed = false;
            string messages  = "";

            try
            {
                var user = new ApplicationUser {
                    UserName = model.AspUser.Email, Email = model.AspUser.Email
                };
                var result = await UserManager.CreateAsync(user, "Password1!");

                if (result.Succeeded)
                {
                    HolidayManagementContext newHolidayManagementContext = new HolidayManagementContext();

                    UserDetails newUser = new UserDetails()
                    {
                        FirstName = model.FirstName, LastName = model.LastName, UserId = user.Id, HireDate = model.HireDate, MaxDays = model.MaxDays
                    };

                    newHolidayManagementContext.UserDetails.Add(newUser);
                    newHolidayManagementContext.SaveChanges();

                    successed = true;
                }
                else
                {
                    messages = result.Errors.First();
                }
            }
            catch (Exception ex) {
                messages = ex.Message;
            }

            return(Json(new { successed = successed, messages = messages, newUser = model }, JsonRequestBehavior.DenyGet));
        }
        public ActionResult EditUser(UserDetails model)
        {
            bool successed;
            HolidayManagementContext newdb = new HolidayManagementContext();
            var user = newdb.UserDetails.FirstOrDefault(x => x.AspNetUser.Email == model.AspNetUser.Email);

            if (user != null)
            {
                user.FirstName        = model.FirstName;
                user.LastName         = model.LastName;
                user.HireDate         = model.HireDate;
                user.MaxDays          = model.MaxDays;
                user.AspNetUser.Email = model.AspNetUser.Email;
                user.TeamId           = model.TeamId;
                newdb.SaveChanges();
                successed = true;
            }
            else
            {
                successed = false;
            }

            return(Json(new { successed = successed, newUser = model }, JsonRequestBehavior.DenyGet));
        }
Esempio n. 20
0
        [HttpPost] //accessible only from HttpPost requests
        public async Task <ActionResult> CreateUser(UserDetails model, string ManageUserRoleID)
        {
            bool          successedd = true;
            List <string> messages   = new List <string>();

            var user = new ApplicationUser {
                UserName = model.AspNetUser.Email, Email = model.AspNetUser.Email
            };
            UserDetails newUser = new UserDetails
            {
                UserID    = user.Id,
                LastName  = model.LastName,
                FirstName = model.FirstName,
                HireDate  = model.HireDate,
                MaxDays   = model.MaxDays,
                TeamId    = model.TeamId
            };
            Regex reg = new Regex("^([A-Za-z]+['.]?[ ]?|[A-Za-z]+['-]?)+$", RegexOptions.Compiled);

            if (!reg.IsMatch(newUser.LastName) || (newUser.LastName == "") || (newUser.LastName == null))
            {
                successedd = false;
                messages.Add("Bad LastName");
            }

            if (!reg.IsMatch(newUser.FirstName) || (newUser.FirstName == "") || (newUser.FirstName == null))
            {
                successedd = false;
                messages.Add("Bad FirstName\r\n");
            }
            HolidayManagementContext newDB = new HolidayManagementContext();

            if (successedd)
            {
                //action validate email address,
                var result = await UserManager.CreateAsync(user, "Password1!");

                if (result.Succeeded)
                {
                    //store the new user into the database.
                    newDB.UserDetails.Add(newUser);
                    //list roles
                    var list = newDB.Roles.ToList();
                    //find our role
                    var name = list.FirstOrDefault(x => x.Id == ManageUserRoleID);
                    //add new role to user
                    await UserManager.AddToRoleAsync(user.Id, name.Name);

                    //commit
                    newDB.SaveChanges();
                    successedd = true;

                    model.UserID = user.Id;
                }
                else
                {
                    //If the email is already taken return a proper error message
                    foreach (var sztring in result.Errors)
                    {
                        messages.Add(sztring);
                    }
                    successedd = false;
                }
            }

            // JSON response containing 3 properties:
            return(Json(new { successed = successedd, messages = messages, newUser = model }, JsonRequestBehavior.DenyGet));
        }
        public ActionResult AddHoliday(Vacation model)
        {
            //ha a model userid null akkor a bejelentkezett usernek irod ha enm a kivalasztott usernek
            var loginedUserUserId     = User.Identity.GetUserId();
            UserDetailsRepository udr = new UserDetailsRepository();
            var loginedUserId         = udr.GetUserDetailsByUserId(loginedUserUserId);

            if (model.UserId == 0)
            {
                model.UserId = loginedUserId.ID;
            }

            BankHolidayRepository bhr = new BankHolidayRepository();
            var holidayDays           = bhr.GetBankHolidays();

            string message   = "ok";
            bool   successed = true;

            model.Date    = DateTime.Now;
            model.StateId = 1;

            int businessDaysUntil = 0;

            try
            {
                businessDaysUntil = BusinessDaysUntil(model.StartDate, model.EndDate, holidayDays);
            }
            catch (ArgumentException e)
            {
                successed = false;
                message   = e.Message;
            }
            model.NrDays = businessDaysUntil;

            using (HolidayManagementContext db = new HolidayManagementContext())
            {
                int sumUsedDays = 0;
                sumUsedDays = (int?)((from c in db.Vacations
                                      where c.UserId == model.UserId
                                      select c.NrDays).Sum()) ?? 0;


                var userMaxDays = db.UserDetailsModel.FirstOrDefault(p => p.ID == model.UserId);
                if (userMaxDays.MaxDays - sumUsedDays > businessDaysUntil)
                {
                    db.Vacations.Add(model);

                    try
                    {
                        db.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        successed = false;
                        message   = "Save in  Error" + e.ToString();
                    }
                }
                else
                {
                    successed = false;
                    message   = "Selected user has not enough holiday days";
                }
            }
            VacationRepository vacationR = new VacationRepository();
            var res = new { Success = successed, EMessage = message, BusinessDaysUntil = businessDaysUntil };

            return(Json(res, JsonRequestBehavior.DenyGet));
        }
Esempio n. 22
0
        public ActionResult AddHoliday(Vacation data)
        {
            bool   success = false;
            string message = "";

            if (data.EndDate < data.StartDate)
            {
                success = false;
                message = "invalid date input";
            }
            else
            {
                HolidayManagementContext database = new HolidayManagementContext();
                Vacation vac = new Vacation();
                vac      = data;
                vac.Date = DateTime.Now;

                var userID = User.Identity.GetUserId();


                if (!string.IsNullOrEmpty(userID))
                {
                    var manager     = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(ApplicationDbContext.Create()));
                    var currentUser = manager.FindById(User.Identity.GetUserId()).Id;
                    var user        = database.UsersDetails.FirstOrDefault(i => i.UID == currentUser);


                    if (data.UserId != 0)
                    {
                        vac.UserId = data.UserId;
                    }
                    else
                    {
                        vac.UserId = user.ID;
                    }


                    double uservacationdays = (vac.EndDate - vac.StartDate).TotalDays;

                    int countdays    = 0;
                    var bankholidays = database.BankHolidays.Where(i => i.Month >= data.StartDate.Month && i.Month <= data.EndDate.Month);

                    var day = data.StartDate;
                    for (int i = 0; i <= uservacationdays; i++)
                    {
                        if (!(day.DayOfWeek == DayOfWeek.Saturday || day.DayOfWeek == DayOfWeek.Sunday))
                        {
                            countdays++;
                        }

                        day = day.AddDays(1);
                    }

                    foreach (var bank in bankholidays)
                    {
                        if (bank.Month == data.StartDate.Month && bank.Day >= data.StartDate.Day)
                        {
                            if (bank.Month == data.EndDate.Month && bank.Day <= data.EndDate.Day)
                            {
                                countdays--;
                            }
                        }


                        if (bank.Month > data.StartDate.Month && bank.Month < data.EndDate.Month)
                        {
                            countdays--;
                        }
                    }


                    //  var actualuservacations = database.Vacations.Where(i => i.StateId != 3  && i.UserId==vac.UserId);
                    var actualuservacations = actuservacations();


                    if (user.MaxDays >= countdays + actualuservacations)
                    {
                        vac.StateId       = 1;
                        vac.Vacationsdays = countdays;
                        database.Vacations.Add(vac);
                        database.SaveChanges();

                        success = true;
                    }
                    else
                    {
                        message = "not enought day";
                    }
                }
            }



            var VR = CreateVacationList();

            return(Json(new { success = success, messages = message, vac = VR }, JsonRequestBehavior.DenyGet));
        }
        public async Task <ActionResult> EditUser(UserDetails data)
        {
            HolidayManagementContext database = new HolidayManagementContext();

            bool success = true;

            var message = " ";


            //var rol = new IdentityUserRole();
            //var roled = rol.RoleId;
            //var a= database.UsersDetails.Find(data.IdentityUser.Id);
            var user = database.UsersDetails.FirstOrDefault(i => i.ID == data.ID);

            if (user.IdentityUser.Email == data.IdentityUser.Email)
            {
                user.FirstName = data.FirstName;
                user.LastName  = data.LastName;
                user.MaxDays   = data.MaxDays;
                user.TeamId    = data.TeamId;
                user.HireDate  = data.HireDate;
                var roleManager  = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(database));
                var RolesForUser = await UserManager.GetRolesAsync(user.UID);

                if (RolesForUser.Count == 0)
                {
                    var role = database.Roles.FirstOrDefault(r => r.Id == data.IdentityRole.Id);
                    await UserManager.AddToRoleAsync(user.UID, role.Name);
                }
                else
                {
                    UserManager.RemoveFromRole(user.UID, RolesForUser[0]);

                    var role = database.Roles.FirstOrDefault(r => r.Id == data.IdentityRole.Id);

                    // Manager.RemoveFromRole(data.ID,oldname);
                    await UserManager.AddToRoleAsync(user.UID, role.Name);
                }
                database.SaveChanges();
            }
            else
            {
                var useremail = await UserManager.FindByEmailAsync(data.IdentityUser.Email);

                if (useremail == null)
                {
                    user.IdentityUser.Email = data.IdentityUser.Email;
                    user.FirstName          = data.FirstName;
                    user.LastName           = data.LastName;
                    user.MaxDays            = data.MaxDays;
                    user.TeamId             = data.TeamId;
                    user.HireDate           = data.HireDate;
                    var roleManager  = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(database));
                    var RolesForUser = await UserManager.GetRolesAsync(user.UID);

                    if (RolesForUser.Count == 0)
                    {
                        var role = database.Roles.FirstOrDefault(r => r.Id == data.IdentityRole.Id);
                        await UserManager.AddToRoleAsync(user.UID, role.Name);
                    }
                    else
                    {
                        UserManager.RemoveFromRole(user.UID, RolesForUser[0]);

                        var role = database.Roles.FirstOrDefault(r => r.Id == data.IdentityRole.Id);

                        // Manager.RemoveFromRole(data.ID,oldname);
                        await UserManager.AddToRoleAsync(user.UID, role.Name);
                    }
                    database.SaveChanges();
                }

                else
                {
                    message = "email already exist";
                    success = false;
                }
            }

            UserDetailsRepository USR = new UserDetailsRepository();

            return(Json(new { success = success, messages = message, newUser = USR.GetUsers() }, JsonRequestBehavior.DenyGet));
        }