Ejemplo n.º 1
0
        public async Task <ExecutionResponse <MetricModel> > CreateMetric(UpdateMetricModel model)
        {
            var oldMetric = _metricQueryRepo.GetAll().FirstOrDefault(x => x.Name.Trim().ToLower() == model.Name.Trim().ToLower() && x.CompanyId == CurrentCompanyId);

            if (oldMetric != null)
            {
                throw new Exception("Metric already exists");
            }

            //save metric info
            var metric = new Metric
            {
                Name         = model.Name,
                DepartmentId = model.DepartmentId,
                Description  = model.Description,
                CompanyId    = CurrentCompanyId,
                CreateById   = _httpContext.GetCurrentSSOUserId()
            };

            await _metricCommandRepo.InsertAsync(metric);

            await _metricCommandRepo.SaveChangesAsync();

            return(new ExecutionResponse <MetricModel>
            {
                ResponseCode = ResponseCode.Ok,
                ResponseData = _mapper.Map <MetricModel>(metric)
            });
        }
Ejemplo n.º 2
0
        public async Task <ExecutionResponse <VenueModel> > CreateVenue(VenueModel model)
        {
            var oldVenue = _venueQueryRepo.GetAll().FirstOrDefault(x => x.Name.Trim().ToLower() == model.Name.Trim().ToLower());

            if (oldVenue != null)
            {
                throw new Exception("Venue already exists");
            }

            //save venue info
            var venue = new Venue
            {
                Name        = model.Name,
                CompanyId   = CurrentCompanyId,
                Description = model.Description,
                CreateById  = _httpContext.GetCurrentSSOUserId()
            };

            await _venueCommandRepo.InsertAsync(venue);

            await _venueCommandRepo.SaveChangesAsync();

            return(new ExecutionResponse <VenueModel>
            {
                ResponseCode = ResponseCode.Ok,
                ResponseData = _mapper.Map <VenueModel>(venue)
            });
        }
Ejemplo n.º 3
0
        public async Task <ExecutionResponse <InterviewSessionModel> > CreateInterviewSession(InterviewSessionModel model)
        {
            //save interviewSession info
            var interviewSession = new InterviewSession
            {
                StartTime   = model.StartTime,
                EndTime     = model.EndTime,
                Subject     = model.Subject,
                VenueId     = model.VenueId,
                RecruiterId = _httpContext.GetCurrentUserId(),
                CompanyId   = CurrentCompanyId,
                JobRoleId   = model.JobRoleId,
                CreateById  = _httpContext.GetCurrentSSOUserId()
            };

            await _interviewSessionCommandRepo.InsertAsync(interviewSession);

            await _interviewSessionCommandRepo.SaveChangesAsync();

            return(new ExecutionResponse <InterviewSessionModel>
            {
                ResponseCode = ResponseCode.Ok,
                ResponseData = _mapper.Map <InterviewSessionModel>(interviewSession)
            });
        }
Ejemplo n.º 4
0
        public async Task <ExecutionResponse <CompanyModel> > CreateCompany(CompanyModel model)
        {
            var oldCompany = _companyQueryRepo.GetAll().FirstOrDefault(x => x.Name.Trim().ToLower() == model.Name.Trim().ToLower());

            if (oldCompany != null)
            {
                throw new Exception("Company already exists");
            }

            //save company info
            var company = new Company
            {
                Name       = model.Name,
                Code       = model.Code,
                CreateById = _httpContext.GetCurrentSSOUserId()
            };

            await _companyCommandRepo.InsertAsync(company);

            await _companyCommandRepo.SaveChangesAsync();

            return(new ExecutionResponse <CompanyModel>
            {
                ResponseCode = ResponseCode.Ok,
                ResponseData = _mapper.Map <CompanyModel>(company)
            });
        }
Ejemplo n.º 5
0
        public async Task <ExecutionResponse <DepartmentModel> > CreateDepartment(DepartmentModel model)
        {
            var oldDepartment = _departmentQueryRepo.GetAll().FirstOrDefault(x => x.Name.Trim().ToLower() == model.Name.Trim().ToLower());

            if (oldDepartment != null)
            {
                throw new Exception("Department already exists");
            }

            //save department info
            var department = new Department
            {
                Name        = model.Name,
                CompanyId   = CurrentCompanyId,
                Description = model.Description,
                CreateById  = _httpContext.GetCurrentSSOUserId()
            };

            await _departmentCommandRepo.InsertAsync(department);

            await _departmentCommandRepo.SaveChangesAsync();

            return(new ExecutionResponse <DepartmentModel>
            {
                ResponseCode = ResponseCode.Ok,
                ResponseData = _mapper.Map <DepartmentModel>(department)
            });
        }
Ejemplo n.º 6
0
        public async Task <ExecutionResponse <object> > SetInterviewInterviewers(long[] interviewerIds, long interviewSessionId)
        {
            try
            {
                var interviewSession = _interviewSessionQueryRepo.GetAll().FirstOrDefault(x => x.Id == interviewSessionId && x.CompanyId == CurrentCompanyId);

                if (interviewSession == null)
                {
                    throw new Exception("Interview session does not exist");
                }

                var interviewInterviewers = _interviewSessionInterviewerQueryRepo.GetAll().Where(x => x.InterviewSessionId == interviewSessionId);

                //to add
                foreach (var id in interviewerIds)
                {
                    if (!interviewInterviewers.Select(x => x.Id).ToArray().Contains(id))
                    {
                        await _interviewSessionInterviewerCommandRepo.InsertAsync(new InterviewSessionInterviewer { InterviewSessionId = interviewSessionId, InterviewerId = id, CreateById = _httpContext.GetCurrentSSOUserId() });
                    }
                }

                //to remove
                foreach (var item in interviewInterviewers.ToList())
                {
                    if (!interviewerIds.Contains(item.Id))
                    {
                        await _interviewSessionInterviewerCommandRepo.DeleteAsync(item);
                    }
                }

                await _interviewSessionInterviewerCommandRepo.SaveChangesAsync();

                return(new ExecutionResponse <object>
                {
                    ResponseData = true,
                    ResponseCode = ResponseCode.Ok
                });
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                return(new ExecutionResponse <object>
                {
                    ResponseData = false,
                    ResponseCode = ResponseCode.ServerException,
                    Message = ex.Message
                });
            }
        }
Ejemplo n.º 7
0
        public async Task <ActionResult> Create(PermissionViewModel permissionVm)
        {
            try
            {
                CreateViewBagParams();
                if (ModelState.IsValid)
                {
                    var permission = new Permission()
                    {
                        Name      = permissionVm.PermissionName,
                        Code      = permissionVm.PermissionCode,
                        CreatedBy = User.Identity.GetUserId <Int64>()
                    };
                    await _permissionCommand.InsertAsync(permission);

                    await _permissionCommand.SaveChangesAsync();

                    _activityRepo.CreateActivityLog(string.Format("Created Portal permission with Name:{0}", permission.Name), this.GetContollerName(), this.GetContollerName(), User.Identity.GetUserId <Int64>(), permission);

                    TempData["MESSAGE"] = "Permission " + permissionVm.PermissionName + " was successfully created";
                    ModelState.Clear();
                    return(Json(new { success = true }));
                }
                else
                {
                    StringBuilder errorMsg = new StringBuilder();

                    foreach (var modelError in ModelState.Values.SelectMany(modelState => modelState.Errors))
                    {
                        errorMsg.AppendLine(modelError.ErrorMessage);
                        ModelState.AddModelError(string.Empty, modelError.ErrorMessage);
                    }
                    ViewBag.ErrMsg = errorMsg.ToString();
                    return(PartialView("_PartialAddEdit", permissionVm));
                }
            }
            catch (Exception exp)
            {
                _log.Error(exp);
                return(View("Error"));
            }
        }
Ejemplo n.º 8
0
        public async Task CreateActivityLogAsync(string descriptn, string moduleName, string moduleAction, Int64 userid, object record)
        {
            try
            {
                ActivityLog alog = new ActivityLog
                {
                    ModuleName   = moduleName,
                    ModuleAction = moduleAction,
                    UserId       = userid,
                    Description  = descriptn,
                    Record       = record != null?JsonConvert.SerializeObject(record) : "N/A"
                };
                await _activityLogRepositoryCommand.InsertAsync(alog);

                await _activityLogRepositoryCommand.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                _log.Error(ex);
            }
        }
Ejemplo n.º 9
0
        public async Task <ActionResult> Create(PermissionViewModel permissionVm)
        {
            long currentUserId = GetCurrentUserId();

            try
            {
                CreateViewBagParams();
                if (ModelState.IsValid)
                {
                    var permission = _mapper.Map <PermissionViewModel, Permission>(permissionVm);
                    permission.CreatedBy = currentUserId;
                    await _permissionCommand.InsertAsync(permission);

                    await _permissionCommand.SaveChangesAsync();

                    _activityRepo.CreateActivityLog(string.Format("Created Portal permission with Name:{0}", permission.Name), this.ControllerContext.ActionDescriptor.ControllerName, this.ControllerContext.ActionDescriptor.ActionName, currentUserId, permission);

                    TempData["MESSAGE"] = "Permission " + permissionVm.PermissionName + " was successfully created";
                    ModelState.Clear();
                    return(Json(new { success = true }));
                }
                else
                {
                    StringBuilder errorMsg = new StringBuilder();

                    foreach (var modelError in ModelState.Values.SelectMany(modelState => modelState.Errors))
                    {
                        errorMsg.AppendLine(modelError.ErrorMessage);
                        ModelState.AddModelError(string.Empty, modelError.ErrorMessage);
                    }
                    ViewBag.ErrMsg = errorMsg.ToString();
                    return(PartialView("_PartialAddEdit", permissionVm));
                }
            }
            catch (Exception exp)
            {
                _log.LogError(exp.Message);
                return(View("Error"));
            }
        }
Ejemplo n.º 10
0
        public async Task <ExecutionResponse <JobRoleModel> > CreateJobRole(UpdateJobRoleModel model)
        {
            var oldJobRole = _jobRoleQueryRepo.GetAll().FirstOrDefault(x => x.Name.Trim().ToLower() == model.Name.Trim().ToLower() && x.Department.CompanyId == CurrentCompanyId);

            if (oldJobRole != null)
            {
                throw new Exception("Job Role already exists");
            }

            if (!_departmentQueryRepo.GetAll().Any(d => d.Id == model.DepartmentId && d.CompanyId == CurrentCompanyId))
            {
                return new ExecutionResponse <JobRoleModel>
                       {
                           ResponseCode = ResponseCode.NotFound,
                           Message      = "Department does not exist"
                       }
            }
            ;

            //save jobRole info
            var jobRole = new JobRole
            {
                Name         = model.Name,
                DepartmentId = model.DepartmentId,
                Description  = model.Description,
                CreateById   = _httpContext.GetCurrentSSOUserId()
            };

            await _jobRoleCommandRepo.InsertAsync(jobRole);

            await _jobRoleCommandRepo.SaveChangesAsync();

            return(new ExecutionResponse <JobRoleModel>
            {
                ResponseCode = ResponseCode.Ok,
                ResponseData = _mapper.Map <JobRoleModel>(jobRole)
            });
        }
Ejemplo n.º 11
0
        public async Task <ExecutionResponse <UserModel> > AddUserRole(UserRoleModel model)
        {
            var role = _roleQueryRepo.GetAll().FirstOrDefault(f => f.Id == model.RoleId);

            if (role == null)
            {
                return(new ExecutionResponse <UserModel>
                {
                    ResponseCode = ResponseCode.NotFound,
                    Message = "Role does not exist"
                });
            }

            if (CurrentCompanyId == 0 && role.RoleName != "CompanyAdmin")
            {
                throw new Exception($"You cannot add role '{role.RoleName}' to a user");
            }

            var user = _userQueryRepo.GetAll().FirstOrDefault(f => f.Id == model.UserId);

            if (user == null || (CurrentCompanyId != 0 && user.CompanyId != CurrentCompanyId))
            {
                return(new ExecutionResponse <UserModel>
                {
                    ResponseCode = ResponseCode.NotFound,
                    Message = "User does not exist"
                });
            }

            if (!user.UserRoles.Any(u => u.RoleId == role.Id))
            {
                var result = await _ssoService.AddRemoveClaims(new UserClaimModel { Claims = new List <SSOClaim> {
                                                                                        new SSOClaim("role", role.RoleName)
                                                                                    }, UserId = user.SSOUserId }, ClaimAction.Add);

                if (result.ResponseCode == ResponseCode.Ok)
                {
                    await _userRoleCommandRepo.InsertAsync(new UserRole { RoleId = role.Id, UserId = user.Id });

                    await _userRoleCommandRepo.SaveChangesAsync();

                    return(await GetUser(model.UserId));
                }
                else
                {
                    return(new ExecutionResponse <UserModel>
                    {
                        ResponseCode = ResponseCode.ServerException,
                        Message = result.Message
                    });
                }
            }
            else
            {
                return(new ExecutionResponse <UserModel>
                {
                    ResponseCode = ResponseCode.ServerException,
                    Message = "User is already attached to specified role"
                });
            }
        }
Ejemplo n.º 12
0
        public async Task <ExecutionResponse <UserModel> > CreateUser(CreateUserModel model)
        {
            if (_userQueryRepo.GetAll().Any(u => u.Email.Trim().ToLower() == model.Email.Trim().ToLower()))
            {
                return new ExecutionResponse <UserModel>
                       {
                           ResponseCode = ResponseCode.ServerException,
                           Message      = "User with specified email already exists"
                       }
            }
            ;

            var role = _roleQueryRepo.GetAll().FirstOrDefault(x => x.Id == model.RoleId);

            if (role == null)
            {
                throw new Exception("Invalid Role");
            }

            if (CurrentCompanyId == 0 && role.RoleName != "CompanyAdmin")
            {
                throw new Exception($"You cannot create a user with role '{role.RoleName}'");
            }

            var company = _companyQueryRepo.GetAll().FirstOrDefault(x => x.Id == model.CompanyId);

            if (company == null)
            {
                throw new Exception("Company does not exist");
            }

            var registerReponse = await _ssoService.Register(new SSOUserDto
            {
                Claims = new List <SSOClaim> {
                    new SSOClaim("role", GetSSORole(role.RoleName)),
                    new SSOClaim("role", role.RoleName)
                },
                ConfirmEmail = false,
                Email        = model.Email,
                FirstName    = model.FirstName,
                LastName     = model.LastName,
                PhoneNumber  = string.IsNullOrEmpty(model.PhoneNumber) ? "08111111111" : model.PhoneNumber,
                UserName     = model.UserName,
                Password     = model.Password
            });

            if (registerReponse.ResponseCode != ResponseCode.Ok)
            {
                return new ExecutionResponse <UserModel>
                       {
                           ResponseCode = ResponseCode.ServerException,
                           Message      = registerReponse.Message
                       }
            }
            ;

            //user registered on sso
            //trigger reset password

            //save user info
            var user = new User
            {
                Email          = model.Email,
                FirstName      = model.FirstName,
                LastName       = model.LastName,
                PhoneNumber    = string.IsNullOrEmpty(model.PhoneNumber) ? "08111111111" : model.PhoneNumber,
                UserName       = model.UserName,
                CompanyId      = CurrentCompanyId == 0 ? model.CompanyId : CurrentCompanyId,
                EmailConfirmed = false,
                CreateById     = CurrentUserId,
                SSOUserId      = registerReponse.ResponseData.UserId
            };
            await _userCommandRepo.InsertAsync(user);

            await _userCommandRepo.SaveChangesAsync();

            //assign role to user
            await _userRoleCommandRepo.InsertAsync(new UserRole { RoleId = role.Id, UserId = user.Id, CreateById = CurrentUserId });

            await _userRoleCommandRepo.SaveChangesAsync();

            //send email confirmation mail
            _emailService.EmailConfirmation(registerReponse.ResponseData.EmailConfirmationToken, model.Email, $"{model.FirstName} {model.LastName}", registerReponse.ResponseData.UserId);


            return(new ExecutionResponse <UserModel>
            {
                ResponseCode = ResponseCode.Ok,
                ResponseData = _mapper.Map <UserModel>(user)
            });
        }
Ejemplo n.º 13
0
        public async Task <ActionResult> Create(EventViewModel eventVm)
        {
            string filename = string.Empty;
            string fileName = string.Empty;

            eventVm.Artists = _utility.GetAllArtists();
            try
            {
                CreateViewBagParams();
                if (ModelState.IsValid)
                {
                    //checking if organizer name does not exist b4
                    var eventnameExist = _EventQuery.GetAllList(m => m.EventName.ToLower().Trim() == eventVm.EventName.ToLower().Trim()).ToList();
                    if (eventnameExist.Any())
                    {
                        ModelState.AddModelError("", "Event name already exist");
                        return(PartialView("_PartialAddEdit", eventVm));
                    }

                    var eventmodel = new Event()
                    {
                        EventName        = eventVm.EventName,
                        EventDescription = eventVm.EventDescription,
                        Venue            = eventVm.Venue,
                        ArtistId         = eventVm.ArtistId,
                        City             = eventVm.City,
                        Country          = eventVm.Country,
                        StartDate        = ExtentionUtility.ConvertDateValue(eventVm.StartDate),
                        EndDate          = ExtentionUtility.ConvertDateValue(eventVm.EndDate),
                        CreatedBy        = GetCurrentUserID()
                    };
                    //Save Event
                    await _EventCommand.InsertAsync(eventmodel);

                    await _EventCommand.SaveChangesAsync();

                    _activityRepo.CreateActivityLog(string.Format("User ID: {0} Created event with event Name:{0}", GetCurrentUserID(), eventmodel.EventName), this.GetContollerName(), this.GetActionName(), GetCurrentUserID(), eventmodel);

                    TempData["MESSAGE"] = "Event " + eventmodel.EventName + " was successfully created";
                    ModelState.Clear();
                    return(Json(new { success = true }));
                }
                else
                {
                    StringBuilder errorMsg = new StringBuilder();

                    var errorModel =
                        from x in ModelState.Keys
                        where ModelState[x].Errors.Count > 0
                        select new
                    {
                        key    = x,
                        errors = ModelState[x].Errors.
                                 Select(y => y.ErrorMessage).
                                 ToArray()
                    };

                    foreach (var item in errorModel)
                    {
                        errorMsg.AppendLine(string.Format("Error Key: {0} Error Message: {1}", item.key, string.Join(",", item.errors)));
                        ModelState.AddModelError(item.key, string.Join(",", item.errors));
                    }
                    ViewBag.ErrMsg = errorMsg.ToString();
                    return(PartialView("_PartialAddEdit", eventVm));
                }
            }
            catch (Exception exp)
            {
                _log.Error(exp);
                return(View("Error"));
            }
        }