public IActionResult New()
        {
            var model = new NotificationNewView();

            model.Notification = new DepartmentNotification();

            ViewBag.Types = model.Type.ToSelectList();

            model.PersonnelRoles = _personnelRolesService.GetRolesForDepartment(DepartmentId);
            model.UnitsTypes     = _unitsService.GetUnitTypesForDepartment(DepartmentId);

            return(View(model));
        }
        public IActionResult New(NotificationNewView model, IFormCollection collection)
        {
            ViewBag.Types = model.Type.ToSelectList();
            model.Notification.DepartmentId = DepartmentId;
            model.Notification.EventType    = (int)model.Type;

            var roles      = new List <string>();
            var groups     = new List <string>();
            var users      = new List <string>();
            int lowerLimit = 0;
            int upperLimit = 0;

            if (collection.ContainsKey("roles") != null)
            {
                roles.AddRange(collection["roles"].ToString().Split(char.Parse(",")));
            }

            if (collection.ContainsKey("groups") != null)
            {
                groups.AddRange(collection["groups"].ToString().Split(char.Parse(",")));
            }

            if (collection.ContainsKey("users") != null)
            {
                users.AddRange(collection["users"].ToString().Split(char.Parse(",")));
            }

            if (collection.ContainsKey("lowerLimit") != null)
            {
                int.TryParse(collection["lowerLimit"], out lowerLimit);
            }

            if (collection.ContainsKey("upperLimit") != null)
            {
                int.TryParse(collection["upperLimit"], out upperLimit);
            }

            model.Notification.LowerLimit = lowerLimit;
            model.Notification.UpperLimit = upperLimit;

            if (ModelState.IsValid)
            {
                foreach (var user in users)
                {
                    if (!String.IsNullOrWhiteSpace(user))
                    {
                        model.Notification.AddUserToNotify(user);
                    }
                }

                foreach (var group in groups)
                {
                    if (!String.IsNullOrWhiteSpace(group))
                    {
                        model.Notification.AddGroupToNotify(int.Parse(group));
                    }
                }

                foreach (var role in roles)
                {
                    if (!String.IsNullOrWhiteSpace(role))
                    {
                        model.Notification.AddRoleToNotify(int.Parse(role));
                    }
                }

                if (model.Type == EventTypes.RolesInGroupAvailabilityAlert)
                {
                    model.Notification.Data = model.SelectedRole.ToString();

                    if (collection.ContainsKey("currentStates") != null)
                    {
                        model.Notification.CurrentData = collection["currentStates"];
                    }
                }
                else if (model.Type == EventTypes.UnitTypesInGroupAvailabilityAlert)
                {
                    model.Notification.Data = model.SelectedUnitType.ToString();

                    if (collection.ContainsKey("currentStates") != null)
                    {
                        model.Notification.CurrentData = collection["currentStates"];
                    }
                }
                else if (model.Type == EventTypes.RolesInDepartmentAvailabilityAlert)
                {
                    model.Notification.LockToGroup = false;
                    model.Notification.Data        = model.SelectedRole.ToString();

                    if (collection.ContainsKey("currentStates") != null)
                    {
                        model.Notification.CurrentData = collection["currentStates"];
                    }
                }
                else if (model.Type == EventTypes.UnitTypesInDepartmentAvailabilityAlert)
                {
                    model.Notification.LockToGroup = false;
                    model.Notification.Data        = model.SelectedUnitType.ToString();

                    if (collection.ContainsKey("currentStates") != null)
                    {
                        model.Notification.CurrentData = collection["currentStates"];
                    }
                }

                _notificationService.Save(model.Notification);

                return(RedirectToAction("Index"));
            }

            model.PersonnelRoles = _personnelRolesService.GetRolesForDepartment(DepartmentId);
            model.UnitsTypes     = _unitsService.GetUnitTypesForDepartment(DepartmentId);

            return(View(model));
        }