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);

                    // 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 database = new HolidayManagementContext();



                    UserDetails newUser = new UserDetails();
                    newUser.FirstName = model.FirstName;
                    newUser.LastName  = model.LastName;
                    newUser.UID       = user.Id;
                    database.UsersDetails.Add(newUser);
                    await UserManager.AddToRoleAsync(user.Id, "Employee");

                    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));
        }
        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));
        }
Пример #5
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));
        }
Пример #7
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));
        }