コード例 #1
0
        public ActionResult Create(FormCollection _POST)
        {
            try
            {
                CustomOrganization organization = new CustomOrganization()
                {
                    Platform            = _POST["platform"],
                    Name                = _POST["Organization.Name"],
                    initials            = _POST["Organization.initials"].ToUpper(),
                    EmailDomainName     = _POST["Organization.EmailDomainName"].ToLower(),
                    Subnet              = _POST["Organization.Subnet"],
                    Vlan                = _POST["Organization.Vlan"],
                    Gateway             = _POST["Organization.Gateway"],
                    IPAddressRangeStart = _POST["Organization.IPAddressRangeStart"],
                    IPAddressRangeEnd   = _POST["Organization.IPAddressRangeEnd"],
                    CreateVMM           = _POST["createvmm"] == "on" ? true : false,
                    createcrayon        = _POST["createcrayon"] == "on" ? true : false,
                };

                CustomCrayonTenantInfoDetailed crayontenantinfodetailed = new CustomCrayonTenantInfoDetailed()
                {
                    InvoiceProfile    = _POST["InvoiceProfile"].ToString(),
                    DomainPrefix      = _POST["CrayonDomainPrefix"],
                    FirstName         = _POST["CrayonFirstName"],
                    LastName          = _POST["CrayonLastName"],
                    Email             = _POST["CrayonTenantInfoDetailed.CrayonEmail"],
                    PhoneNumber       = _POST["CrayonPhoneNumber"],
                    CustomerFirstName = _POST["CrayonCustomerFirstName"],
                    CustomerLastName  = _POST["CrayonCustomerLastName"],
                    AddressLine1      = _POST["CrayonAddressLine1"],
                    City       = _POST["CrayonCity"],
                    Region     = _POST["CrayonRegion"],
                    PostalCode = _POST["CrayonPostalCode"]
                };

                model.Organization = organization;

                if (model.Organizations.Contains(organization.initials))
                {
                    throw new ArgumentException(string.Format("The organizaton '{0}' already exists.", organization.initials));
                }

                if (organization.initials.Length < 2 || organization.initials.Length > 5)
                {
                    throw new ArgumentException("The organizaton name must be between 2 and 5 characters.");
                }

                if (!organization.EmailDomainName.Contains(".") || organization.EmailDomainName.Contains("@"))
                {
                    throw new ArgumentException(string.Format("'{0}' is not a valid email domain name.", organization.EmailDomainName));
                }

                CommonCAS.Log(string.Format("has run Organization/Create() to create {0}", organization.initials));



                // execute powershell script and dispose powershell object
                using (MyPowerShell ps = new MyPowerShell())
                {
                    ps.CreateOrganization(organization, crayontenantinfodetailed);
                    var result = ps.Invoke();

                    if (result.Count() == 0)
                    {
                        model.OKMessage.Add(string.Format("Organization '{0}' created.", organization.initials));
                        CommonCAS.Log(string.Format("has run Organization/Create() to create {0}", organization.initials));
                    }
                    else
                    {
                        CommonCAS.Log(string.Format("has run Organization/Create() to create {0}", organization.initials));
                        model.OKMessage.Add(string.Format("Organization '{0}' created with following info:", organization.initials));

                        if (organization.createcrayon)
                        {
                            foreach (PSObject item in result)
                            {
                                model.CrayonTenantDetailed.ExternalPublisherCustomerId = item.Members["ExternalPublisherCustomerId"].Value.ToString();
                                model.CrayonTenantDetailed.AdminUser = item.Members["AdminUser"].Value.ToString();
                                model.CrayonTenantDetailed.AdminPass = item.Members["AdminPass"].Value.ToString();
                            }
                        }
                    }
                }

                CommonCAS.Stats("Organization/Create");
                return(View("CreateSuccess", model));
            }
            catch (Exception exc)
            {
                CommonCAS.Log("Exception: " + exc.Message);
                model.ActionFailed = true;
                model.Message      = exc.Message;
                return(View(model));
            }
        }