Пример #1
0
        public string JoinEventViaLink(int EventId, string email, string Code)
        {
            var repo        = _contextManager.CreateRepositiry <IEventRepo>();
            var eventRecord = repo.GetById(EventId);

            _subscriptionService.CheckSubscription(eventRecord.CompanyId);

            if (eventRecord == null)
            {
                throw new ValidationException("Event not found");
            }

            var repoUser = _contextManager.CreateRepositiry <IUserRepo>();
            var user     = repoUser.GetUserByEmail(email);

            if (user == null)
            {
                throw new ValidationException("User not found");
            }

            string hashUrl = "{" + GetHashString(secretKey + eventRecord.Name) + "}";

            if (Code == hashUrl)
            {
                var repoCompUser = _contextManager.CreateRepositiry <ICompanyUserLinkRepo>();
                var companyUser  = repoCompUser.GetRecordByCompanyAndUser(user.Id, EventId);

                if (!(companyUser == null))
                {
                    throw new ValidationException("User is already added to the event.");
                }

                var entity = new CompanyUserLink
                {
                    CompanyId       = EventId,
                    UserId          = user.Id,
                    UserCompanyRole = (int)Model.Enums.EventUserRoleEnum.User
                };
                repoCompUser.Add(entity);
                _contextManager.Save();

                return("You are join the event");
            }
            else
            {
                return("Sorry, unexpected error");
            }
        }
        public CompanyDto CreateCompany(CompanyCreateDto dto)
        {
            var repoUser = _contextManager.CreateRepositiry <IUserRepo>();
            var user     = repoUser.GetById(dto.UserId);

            var repoCompany = _contextManager.CreateRepositiry <ICompanyRepo>();
            var company     = repoCompany.GetCompanyByName(dto.Name);

            if (!(company == null))
            {
                throw new ValidationException("Company with name <" + dto.Name + "> is already exists.");
            }

            var entity = _mapper.Map <Company>(dto);

            repoCompany.Add(entity);

            _contextManager.Save();

            var repoCompUser = _contextManager.CreateRepositiry <ICompanyUserLinkRepo>();
            var companyUser  = new CompanyUserLink
            {
                CompanyId       = entity.Id,
                UserId          = user.Id,
                UserCompanyRole = (int)Model.Enums.CompanyUserRoleEnum.Owner
            };

            repoCompUser.Add(companyUser);
            _contextManager.Save();


            var repoCompSub = _contextManager.CreateRepositiry <ICompanySubRepo>();
            var companySub  = new CompanySubscription
            {
                CompanyId       = entity.Id,
                UserId          = user.Id,
                SubEndDt        = DateTime.UtcNow.Date,
                UseTrialVersion = (int)Model.Enums.CompanyTrialVersionEnum.ReadyToUseTrial
            };

            repoCompSub.Add(companySub);
            _contextManager.Save();

            return(_mapper.Map <CompanyDto>(entity));
        }
        public string AcceptInvitation(int companyId, string Email)
        {
            _subscriptionService.CheckSubscription(companyId);
            var repoUser = _contextManager.CreateRepositiry <IUserRepo>();
            var user     = repoUser.GetUserByEmail(Email);

            if (user == null)
            {
                throw new ValidationException("User not found.");
            }

            var repoCompany = _contextManager.CreateRepositiry <ICompanyRepo>();
            var company     = repoCompany.GetById(companyId);

            if (company == null)
            {
                throw new ValidationException("Company not found.");
            }

            var repoCompUser = _contextManager.CreateRepositiry <ICompanyUserLinkRepo>();
            var companyUser  = repoCompUser.GetRecordByCompanyAndUser(user.Id, companyId);

            if (!(companyUser == null))
            {
                throw new ValidationException("User is already added to the company.");
            }

            var entity = new CompanyUserLink
            {
                CompanyId       = companyId,
                UserId          = user.Id,
                UserCompanyRole = (int)Model.Enums.CompanyUserRoleEnum.User
            };

            repoCompUser.Add(entity);

            _contextManager.Save();
            return("You successfully join the Company");
        }