Esempio n. 1
0
        public async Task <IActionResult> AddOrganization(PostOrganizationViewModel model)
        {
            if (ModelState.IsValid)
            {
                var organization = new Organization()
                {
                    Name = model.Name,
                    INN  = model.INN,
                    OGRN = model.OGRN
                };

                if (model.SelectedUserId != null)
                {
                    var selectedUserId = (int)model.SelectedUserId;
                    organization.UserId = selectedUserId;

                    var user = await _userData.GetUserData(selectedUserId);

                    organization.User = user;
                }

                _organizationService.Add(organization);

                return(RedirectToAction("Index", "Organization"));
            }

            return(View(model));
        }
Esempio n. 2
0
        /// <summary>
        /// Добавить сотрудника
        /// </summary>
        /// <param name="addedEmployee">DTO добавляемого сотрудника</param>
        /// <returns>Сотрудник</returns>
        public Employee Add(EmployeeDto addedEmployee)
        {
            Contract.Argument.IsNotNull(addedEmployee, nameof(addedEmployee));

            var userId            = _userContextPrtovider.GetUserId();
            var contact           = _contactService.Add(addedEmployee.Contact);
            var passport          = _passportService.Add(addedEmployee.Passport);
            var organization      = _organizationService.Add(addedEmployee.Organization);
            var stateRegistration = _stateRegistrationService.Add(addedEmployee.StateRegistration);

            var newEmployee = _employeeRepository.Create(
                userId: userId,
                managerId: addedEmployee.ManagerId,
                contactId: contact.Id,
                passportId: passport.Id,
                invitationId: null,
                organizationId: organization.Id,
                stateRegistrationId: stateRegistration.Id,
                academicDegree: addedEmployee.AcademicDegree,
                academicRank: addedEmployee.AcademicRank,
                education: addedEmployee.Education,
                position: addedEmployee.Position,
                workPlace: addedEmployee.WorkPlace);

            return(newEmployee);
        }
Esempio n. 3
0
        public JsonResult SaveCompany(BaseRequestParam param)
        {
            IOrganizationService organzeService = IocMvcFactoryHelper.GetInterface <IOrganizationService>();

            Common.Data.JsonData json = organzeService.Add(new Organze()
            {
                Name = param.Name, Code = param.Code
            });
            return(Json(json));
        }
 public ActionResult <Organization> Add(Organization org)
 {
     try
     {
         return(_service.Add(org) as Organization);
     }
     catch (Exception ex)
     {
         return(BadRequest(ex));
     }
 }
 public ActionResult Create(OrganizationEdit orgEdit)
 {
     if (ModelState.IsValid)
     {
         var organization = Mapper.Map <Organization>(orgEdit);
         _organizationService.Add(organization);
         _organizationService.UpdateEmailDomains(organization, orgEdit.EmailDomainList);
         return(RedirectToRoute("admin-organizations"));
     }
     return(View(orgEdit));
 }
        public IActionResult Post([FromBody] OrganizationModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var response = organizationService.Add(model);

            if (!response.Success)
            {
                return(BadRequest(response.Message));
            }
            return(Ok(response.ReturnedId));
        }
        public ActionResult <IEnumerable <OrganizationDTO> > Post([FromBody] OrganizationAddDTO organization)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    throw new Exception("Fail on model validation");
                }

                _app.Add(organization);
                return(_app.SelectAll());
            }
            catch (Exception ex)
            {
                _err.Add(ex, HttpContext.User.Identity.Name);
                return(BadRequest(ex.Message));
            }
        }
Esempio n. 8
0
        public void AddOrg()
        {
            var w = AppEx.Container.GetInstance <IViewModel>("OrgViewModel");

            w.Model = new OPC_OrgInfo();
            if (w.View.ShowDialog() == true)
            {
                IOrganizationService service = GetDataService();
                var orgInfo = w.Model as OPC_OrgInfo;
                orgInfo.ParentID = OrgId;
                ResultMsg resultMsg = service.Add(orgInfo);
                if (resultMsg.IsSuccess)
                {
                    AddSubNode(resultMsg.Data as OPC_OrgInfo);
                }
                else
                {
                    MessageBox.Show("添加失败", "失败", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Добавить иностранца
        /// </summary>
        /// <param name="addedAlien">DTO добавляемого иностранца</param>
        public Alien Add(AlienDto addedAlien)
        {
            Contract.Argument.IsNotNull(addedAlien, nameof(addedAlien));

            var alienContact           = _contactService.Add(addedAlien.Contact);
            var alienPassport          = _passportService.Add(addedAlien.Passport);
            var alienOrganization      = _organizationService.Add(addedAlien.Organization);
            var alienStateRegistration = _stateRegistrationService.Add(addedAlien.StateRegistration);

            var alien = _alienRepository.Create(
                invitationId: addedAlien.InvitationId,
                contactId: alienContact.Id,
                passportId: alienPassport.Id,
                organizationId: alienOrganization.Id,
                stateRegistrationId: alienStateRegistration.Id,
                position: addedAlien.Position,
                workPlace: addedAlien.WorkPlace,
                workAddress: addedAlien.WorkAddress,
                stayAddress: addedAlien.StayAddress);

            return(alien);
        }
Esempio n. 10
0
        public IActionResult Create(RegisterOrganizationForm registerOrganizationForm)
        {
            if (ModelState.IsValid)
            {
                var organization = _organizationService.Add(
                    registerOrganizationForm.Title,
                    registerOrganizationForm.TitleShort,
                    registerOrganizationForm.ParentOrganizationId,
                    registerOrganizationForm.OrganizationTypeId,
                    registerOrganizationForm.LegalAddress,
                    registerOrganizationForm.PostAddress,
                    registerOrganizationForm.Phone,
                    registerOrganizationForm.Fax,
                    registerOrganizationForm.Email,
                    registerOrganizationForm.Inn,
                    registerOrganizationForm.Kpp,
                    registerOrganizationForm.Ogrn,
                    registerOrganizationForm.Okved,
                    registerOrganizationForm.Okpo,
                    registerOrganizationForm.Okato,
                    registerOrganizationForm.AccountNumber,
                    registerOrganizationForm.BankTitle,
                    registerOrganizationForm.Bik,
                    registerOrganizationForm.BankCorrespAccount
                    );

                var uri = Url.Link("OrganizationResource", new { id = organization.Id });

                var organizationViewModel = _organizationModelBuilder.BuildNew(organization);

                return(Created(uri, organizationViewModel));
            }
            else
            {
                return(BadRequest());
            }
        }
Esempio n. 11
0
        public AppQuery(ILoggerFactory loggerFactory,
                        IOrganizationService organizationService,
                        IMemberService memberService)
        {
            _organizationService = organizationService;
            _memberService       = memberService;

            var logger = loggerFactory.CreateLogger <AppQuery>();

            Field <NonNullGraphType <StringGraphType> >()
            .Name("setup")
            .Argument <StringGraphType>("redirectUrl", "The redirect url")
            .Resolve(context =>
            {
                var userContext = context.UserContext.As <Context>();
                var csrf        = Password.Generate(24, 1);
                var redirectUrl = context.GetArgument <string>("redirectUrl");

                userContext.HttpContext.Session.SetString("CSRF", csrf);

                var request = new OauthLoginRequest(Env.GetString("CLIENT_ID"))
                {
                    Scopes = { "admin:repo_hook", "repo" },
                    State  = csrf,
                };

                if (redirectUrl != null)
                {
                    request.RedirectUri = new Uri($"{Env.GetString("APP_URL")}/setupCallback?redirectUrl={redirectUrl}");
                }

                var oAuthLoginUrl = _client.Oauth.GetGitHubLoginUrl(request);

                return(oAuthLoginUrl);
            });

            Field <NonNullGraphType <ListGraphType <OrganizationPayload> > >()
            .Name("organizations")
            .ResolveAsync(async context =>
            {
                var userContext = context.UserContext.As <Context>();
                var token       = userContext.HttpContext.Session.GetString("OAuthToken");

                if (token == null)
                {
                    throw new NullReferenceException("OAuthToken is null");
                }

                _client.Credentials = new Credentials(token);

                var user          = await _client.User.Current();
                var organizations = _organizationService.GetOrganizations(user.Id);

                return(organizations);
            });

            Field <NonNullGraphType <BooleanGraphType> >()
            .Argument <NonNullGraphType <StringGraphType> >("code", "The code for the setup")
            .Argument <NonNullGraphType <StringGraphType> >("state", "The CSRF protection state")
            .Name("setupCallback")
            .ResolveAsync(async context =>
            {
                var userContext   = context.UserContext.As <Context>();
                var state         = context.GetArgument <string>("state");
                var code          = context.GetArgument <string>("code");
                var expectedState = userContext.HttpContext.Session.GetString("CSRF");

                if (state != expectedState)
                {
                    throw new InvalidOperationException();
                }

                userContext.HttpContext.Session.SetString("CSRF", "");
                var request = new OauthTokenRequest(Env.GetString("CLIENT_ID"), Env.GetString("CLIENT_SECRET"), code);
                var token   = await _client.Oauth.CreateAccessToken(request);

                _client.Credentials = new Credentials(token.AccessToken);

                userContext.HttpContext.Session.SetString("OAuthToken", token.AccessToken);

                var organizations = await _client.Organization.GetAllForCurrent();

                foreach (var organization in organizations)
                {
                    var secretKey        = Env.GetString("GITHUB_WEBHOOKS_SECRETKEY_DEFAULT");
                    var gitHubWebHookUrl = Env.GetString("GITHUB_WEBHOOK_URL", Env.GetString("APP_URL"));

                    var hooks = new Dictionary <string, string> {
                        { "url", $"{gitHubWebHookUrl}/api/webhooks/incoming/github" },
                        { "secret", secretKey },
                        { "content_type", "json" }
                    };

                    try
                    {
                        await _client.Repository.Create(organization.Login, new NewRepository(Constants.RepositoryName)
                        {
                            Description = "This repository is auto-generated by onboardor.com and is used for storing the issues. Do not delete.",
                        });
                    }
                    catch (RepositoryExistsException) { }

                    try
                    {
                        await _client.Repository.Hooks.Create(organization.Login, Constants.RepositoryName,
                                                              new NewRepositoryHook("web", hooks)
                        {
                            Events = new List <string> {
                                "issues"
                            },
                            Active = true
                        });
                    }
                    catch (Exception ex) when(ex is ApiValidationException || ex is NotFoundException)
                    {
                    }

                    var existingOrganization = _organizationService.GetOrganization(organization.Id);

                    Member GetMember(int id, string name, string avatarUrl)
                    {
                        return(new Member
                        {
                            Id = id,
                            Name = name,
                            AvatarUrl = avatarUrl
                        });
                    }

                    if (existingOrganization == null)
                    {
                        var users           = await _client.Organization.Member.GetAll(organization.Login);
                        var newOrganization = new Organization
                        {
                            Id        = organization.Id,
                            Name      = organization.Login,
                            AvatarUrl = organization.AvatarUrl,
                        };

                        foreach (var user in users)
                        {
                            var existingMember = _memberService.GetMember(user.Id);

                            newOrganization.Members.Add(new OrganizationMember
                            {
                                Member       = existingMember ?? GetMember(user.Id, user.Login, user.AvatarUrl),
                                Organization = newOrganization
                            });
                        }

                        _organizationService.Add(newOrganization);
                    }
                    else
                    {
                        var users           = await _client.Organization.Member.GetAll(existingOrganization.Name);
                        var usersToAdd      = users.Where(x => existingOrganization.Members.All(z => z.Member.Id != x.Id));
                        var membersToRemove = existingOrganization.Members.Where(x => users.All(z => z.Id != x.Member.Id)).Select(x => x.Member);

                        foreach (var userToAdd in usersToAdd)
                        {
                            var member = GetMember(userToAdd.Id, userToAdd.Login, userToAdd.AvatarUrl);

                            member.Organizations = new List <OrganizationMember> {
                                new OrganizationMember {
                                    Member = member, Organization = existingOrganization
                                }
                            };

                            _memberService.Add(member);
                        }

                        foreach (var memberToRemove in membersToRemove)
                        {
                            _memberService.Remove(memberToRemove);
                        }
                    }
                }

                var currentUser   = await _client.User.Current();
                var currentMember = _memberService.GetMember(currentUser.Id);

                var existingOrganizations = currentMember.Organizations;
                var organizationsToRemove = existingOrganizations.Where(x => organizations.All(z => z.Id != x.Organization.Id));

                foreach (var organizationToRemove in organizationsToRemove)
                {
                    currentMember.Organizations.Remove(organizationToRemove);
                }

                return(true);
            });
        }