public void MakeControllers(List <DefineController> controllers)
        {
            foreach (var controller in controllers)
            {
                var areaPath = "\\Areas\\" + controller.SubSystem.Name + "\\Controllers";
                CreateIsNotExist(Path + areaPath);

                string controllerContent = "";
                foreach (var controllerMethod in controller.DefineControllerMethods)
                {
                    if (!controllerMethod.InParent)
                    {
                        controllerContent += CreateControllerMethod(controllerMethod);
                    }
                }


                //   controller.Name += "Controller";
                CreateClass(controller.Name, Path + areaPath + "\\", ".cs"
                            , MVCUtility.GetControllerContent(controller: controller, translate: controller.Name,
                                                              serviceName: controller.Name,
                                                              baseClassName: $@"EBaseAppController<{controller.Model.Name},CommonParameter>",
                                                              baseInterfaces: null,
                                                              serviceContent: controllerContent,
                                                              description: controller.Name,
                                                              genericModel: null,
                                                              subSystemName: controller.SubSystem.Name, isNormalController: true));
            }
        }
        public void MakeViews(List <DefineController> controllers)
        {
            var methods = controllers.SelectMany(c => c.DefineControllerMethods);

            /// ایجاد ویو های دیفالت
            foreach (var controller in controllers)
            {
                var subsytemName   = controller.SubSystem.Name;
                var controllerName = controller.Name;
                var modelName      = controller.Model.Translate;

                controllerName = controllerName.Replace("ApiController", "");
                controllerName = controllerName.Replace("Controller", "");

                CreateIsNotExist(Path + "\\Areas\\" + subsytemName + "\\Views\\" + controllerName);

                CreateClass("GetDataTable", Path + "\\Areas\\" + subsytemName + "\\Views\\" + controllerName + "\\"
                            , ".cshtml", MVCUtility.GetDataTableView($@" جدول {modelName} ها"));
                CreateClass("ForEdit", Path + "\\Areas\\" + subsytemName + "\\Views\\" + controllerName + "\\"
                            , ".cshtml", MVCUtility.GetForEditView($@" ویرایش {modelName} "));
                CreateClass("Delete", Path + "\\Areas\\" + subsytemName + "\\Views\\" + controllerName + "\\"
                            , ".cshtml", MVCUtility.GetDeleteView());
            }

            // ایجاد ویو برای متد های دیگر
            foreach (var method in methods)
            {
                var controllerName = method.DefineController.Name;

                controllerName = controllerName.Replace("ApiController", "");
                controllerName = controllerName.Replace("Controller", "");

                var subsytemName = method.DefineController.SubSystem.Name;
                CreateIsNotExist(Path + "\\Areas\\" + subsytemName + "\\Views");
                CreateIsNotExist(Path + "\\Areas\\" + subsytemName + "\\Views\\" + controllerName);

                if (method.MethodType == MethodType.GetDataTable)
                {
                    CreateClass(method.Name, Path + "\\Areas\\" + subsytemName + "\\Views\\" + controllerName + "\\"
                                , ".cshtml", MVCUtility.GetDataTableView(method.Translate));
                }

                if (method.MethodType == MethodType.GetForEdit)
                {
                    CreateClass(method.Name, Path + "\\Areas\\" + subsytemName + "\\Views\\" + controllerName + "\\"
                                , ".cshtml", MVCUtility.GetForEditView(method.Translate));
                }

                if (method.MethodType == MethodType.Delete)
                {
                    CreateClass(method.Name, Path + "\\Areas\\" + subsytemName + "\\Views\\" + controllerName + "\\"
                                , ".cshtml", MVCUtility.GetDeleteView());
                }
            }
        }
 public void MakeSubsystems(List <SubSystem> subSystems)
 {
     foreach (var subSystem in subSystems)
     {
         CreateIsNotExist(Path + "\\Areas\\");
         CreateIsNotExist(Path + "\\Areas\\" + subSystem.Name);
         CreateIsNotExist(Path + "\\Areas\\" + subSystem.Name + "\\Controllers");
         CreateIsNotExist(Path + "\\Areas\\" + subSystem.Name + "\\Models");
         CreateIsNotExist(Path + "\\Areas\\" + subSystem.Name + "\\Views");
         CreateRegistrationClass(subSystem.Name, Path + "\\Areas\\" + subSystem.Name);
         CreateClass("web", Path + "\\Areas\\" + subSystem.Name + "\\Views\\", ".config",
                     MVCUtility.GetWebConfigContent());
     }
 }
        public void MakeModels(List <Model> models)
        {
            foreach (var model in models)
            {
                var serviceAreaPath = "\\Model\\";
                CreateIsNotExist(Path + serviceAreaPath);

                string modelContent = "";
                foreach (var property in model.Properties)
                {
                    modelContent += MVCUtility.GetProperty(property);
                }

                CreateClass(model.Name, Path + serviceAreaPath + "\\", ".cs"
                            , MVCUtility.GetModelContent(model,
                                                         baseClassName: "BaseEntity",
                                                         serviceContent: modelContent,
                                                         description: model.Name));
            }
        }
        public void RegisterServices(List <DefineService> services, string serviceBase)
        {
            string serviceContent     = "";
            string serviceGlobalNames = "";

            foreach (var service in services)
            {
                var serviceAreaPath = "\\Registery\\" + service.SubSystem.Name;
                CreateIsNotExist(Path + serviceAreaPath);

                serviceContent     += MVCUtility.GetRegisterService(service, serviceBase);
                serviceGlobalNames += MVCUtility.GetGlobalName(service, serviceBase);
            }

            CreateClass("ServiceRegistery", Path + "Registery" + "\\", ".cs"
                        , MVCUtility.GetRegieryContent(baseClassName: "Registry",
                                                       serviceContent: serviceContent));

            CreateClass("ServiceGlobalNames", Path + "Global" + "\\", ".cs"
                        , MVCUtility.GetGlobalNamesContent(serviceGlobalNames: serviceGlobalNames));
        }
        public void MakeApiControllers(List <DefineController> controllers)
        {
            foreach (var controller in controllers)
            {
                var areaPath = "\\Areas\\" + controller.SubSystem.Name + "\\Controllers";
                CreateIsNotExist(Path + areaPath);

                string controllerContent = "";
                foreach (var controllerMethod in controller.DefineControllerMethods)
                {
                    if (!controllerMethod.InParent)
                    {
                        controllerContent += MVCUtility.GetControllerApiMethod(controllerMethod);
                    }
                }

                if (controller.Name.ToLower().Contains("controller"))
                {
                    var start = controller.Name.ToLower().IndexOf("controller");
                    controller.Name = controller.Name.Substring(0,
                                                                start);
                }

                controller.Name += "ApiController";

                CreateClass(controller.Name, Path + areaPath + "\\", ".cs"
                            , MVCUtility.GetControllerContent(controller: controller, translate: controller.Name,
                                                              serviceName: controller.Name,
                                                              baseClassName: $@"BaseApiController<{controller.Model.Name},CommonParameter>",
                                                              baseInterfaces: null,
                                                              serviceContent: controllerContent,
                                                              description: controller.Name,
                                                              genericModel: null,
                                                              subSystemName: controller.SubSystem.Name, isNormalController: false,
                                                              isMVC: false));
            }
        }
        public void MakeServices(List <DefineService> services)
        {
            foreach (var service in services)
            {
                var serviceAreaPath = "\\ServiceLayer\\" + service.SubSystem.Name;
                CreateIsNotExist(Path + serviceAreaPath);

                string serviceContent = "";
                foreach (var serviceMethod in service.ServiceMethods)
                {
                    serviceContent += CreateServiceMethod(serviceMethod);
                }

                CreateClass(service.Name, Path + serviceAreaPath + "\\", ".cs"
                            , MVCUtility.GetServiceContent(translate: service.Name,
                                                           serviceName: service.Name,
                                                           baseClassName: "CommonService",
                                                           baseInterfaces: null,
                                                           serviceContent: serviceContent,
                                                           description: service.Name,
                                                           genericModel: service.Model.Name,
                                                           subSystemName: service.SubSystem.Name));
            }
        }
 private string CreateServiceMethod(ServiceMethod serviceMethod)
 {
     return(MVCUtility.GetServiceMethod(serviceMethod.Name,
                                        serviceMethod.ServiceItemReturnType, serviceMethod.ServiceReturnMethodType,
                                        serviceMethod.Query, serviceMethod: serviceMethod));
 }
 private string CreateControllerMethod(DefineControllerMethod controllerMethod)
 {
     return(MVCUtility.GetControllerMethod(controllerMethod));
 }
 public void CreateRegistrationClass(string AreaName, string path)
 {
     CreateClass(AreaName, path + "\\", "AreaRegistration.cs", MVCUtility.GetRegisterAreaContent(AreaName));
 }