public ActionResult FillProject(Project model)
        {
            if (ModelState.IsValid)
            {
                var initial = RepositoryContext.Current.GetOne <Project>(t => t._id == model._id);
                initial.Name        = model.Name;
                initial.Description = model.Description;
                initial.AddressName = model.AddressName;
                initial.Region      = model.Region;
                initial.Address     = new Address {
                    Lat = model.Address.Lat, Lng = model.Address.Lng
                };
                initial.Tags = model.Tags;
                try
                {
                    ProjectStateManager.StateManagerFactory(initial, User.Identity.Name,
                                                            Roles.GetRolesForUser(User.Identity.Name)).FillInformation(initial);
                    return(RedirectToAction("Project", "BaseProject", new { id = model._id }));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("Name", ex.Message);
                }
            }

            return(View(model));
        }
        public ActionResult Comission(Comission comission)
        {
            if (!ModelState.IsValid)
            {
                return(View(comission));
            }

            if (comission.CommissionTime < DateTime.Now)
            {
                ModelState.AddModelError("CommissionTime", "Время комиссии должно быть больше чем текущее время");
                return(View(comission));
            }

            RepositoryContext.Current.Add(comission);

            foreach (var project in comission.Projects)
            {
                if (comission.Type == ComissionType.Comission)
                {
                    ProjectStateManager.StateManagerFactory(project, User.Identity.Name, Roles.GetRolesForUser(User.Identity.Name))
                    .Comission();
                }
                else
                {
                    ProjectStateManager.StateManagerFactory(project, User.Identity.Name, Roles.GetRolesForUser(User.Identity.Name))
                    .Ispolcom();
                }
            }

            return(RedirectToAction("All", "BaseProject"));
        }
        public ActionResult TemplateProject(Template model)
        {
            if (ModelState.IsValid)
            {
                var initial = RepositoryContext.Current.GetOne <Project>(t => t._id == model._id) as Template;
                if (initial == null)
                {
                    throw new ArgumentNullException("cannot find project");
                }
                initial.Name         = model.Name;
                initial.Description  = model.Description;
                initial.AddressName  = model.AddressName;
                initial.IsInList     = model.IsInList;
                initial.Region       = model.Region;
                initial.Area         = model.Area;
                initial.CadastrValue = model.CadastrValue;
                initial.Address      = new Address {
                    Lat = model.Address.Lat, Lng = model.Address.Lng
                };
                initial.Tags = model.Tags;
                try
                {
                    ProjectStateManager.StateManagerFactory(initial, User.Identity.Name,
                                                            Roles.GetRolesForUser(User.Identity.Name)).FillInformation(initial);
                    return(RedirectToAction("Project", "BaseProject", new { id = model._id }));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("Name", ex.Message);
                }
            }

            return(View(model));
        }
 public ActionResult NewResponseToProject(InvestorResponse model)
 {
     if (ModelState.IsValid)
     {
         ProjectStateManager.StateManagerFactory(model.ProjectId, null, null).ResponsedOnProject(model);
         return(RedirectToAction("Index"));
     }
     return(View(model));
 }
示例#5
0
 public ActionResult InvestorSelected(Project project)
 {
     ProjectStateManager
     .StateManagerFactory(
         project,
         User.Identity.Name,
         Roles.GetRolesForUser(User.Identity.Name))
     .InvestorSelected();
     return(RedirectToAction("Project", "BaseProject", new { id = project._id }));
 }
        public ActionResult CreateTemplateProject(Template model)
        {
            if (ModelState.IsValid)
            {
                ProjectStateManager.StateManagerFactory(model, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).CreateProject(model);
                return(RedirectToAction("Project", "BaseProject", new { id = model._id }));
            }

            return(View(model));
        }
        public MainWindow()
        {
            InitializeComponent();

            ProjectStateManager = ProjectStateManager.Instance;

            GraphView_StateManager graphView_StateManager = new GraphView_StateManager();

            ProjectStateManager.StateManagers.Add(graphView_StateManager);

            GraphViewMainGrid.Children.Add(graphView_StateManager.View);
            Closing += graphView_StateManager.Dispose;
        }
示例#8
0
        public ActionResult AddInvolvedOrganizations(AddDocumentViewModel model)
        {
            ViewBag.DocumentList =
                RepositoryContext.Current.All <TaskTemplate>(t => t.Type == TaskTypes.InvolvedOrganiztion)
                .Select(template => template.Title)
                .ToList();

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var project = RepositoryContext.Current.GetOne <Project>(p => p._id == model.PorjectId);

            IQueryable <TaskTemplate> templates =
                RepositoryContext.Current.All <TaskTemplate>(t => model.Documents.Contains(t.Title));
            var tasks = new List <ProjectTask>();

            foreach (var template in templates)
            {
                tasks.Add(new ProjectTask
                {
                    _id          = ObjectId.GenerateNewId().ToString(),
                    ProjectId    = model.PorjectId,
                    Body         = template.Body,
                    Title        = template.Title,
                    Type         = template.Type,
                    Step         = ProjectWorkflow.State.InvolvedOrganizations,
                    CreationTime = DateTime.Now
                });
            }

            if (project.Tasks == null)
            {
                project.Tasks = new List <ProjectTask>();
            }
            project.Tasks.RemoveAll(p => p.Type == TaskTypes.InvolvedOrganiztion);
            project.Tasks.AddRange(tasks);

            RepositoryContext.Current.Update(project);
            try
            {
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).DocumentUpdate();
            }
            catch (Exception)
            {
            }
            return(RedirectToAction("Project", "BaseProject", new { id = model.PorjectId }));
        }
示例#9
0
        public ActionResult StatusInfo(string id)
        {
            var project = RepositoryContext.Current.GetOne <Project>(p => p._id == id);

            if (project == null)
            {
                return(HttpNotFound("проект не найден"));
            }

            ViewBag.AvaibleTriggers = ProjectStateManager.StateManagerFactory(
                project,
                User.Identity.Name,
                Roles.GetRolesForUser(User.Identity.Name))
                                      .GetAvaibleTriggers();

            return(PartialView(project.WorkflowState.CurrentState.ToString(), project));
        }
        public ActionResult InvolvedReport(ReportResponse model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var         project = RepositoryContext.Current.GetOne <Project>(p => p._id == model.ProjectId);
            ProjectTask task    = project.Tasks.Find(t => t._id == model.TaskId);

            if (task.TaskReport == null)
            {
                task.TaskReport = new List <Report>();
            }

            var report = new Report
            {
                _id            = ObjectId.GenerateNewId().ToString(),
                ReportTime     = DateTime.Now,
                Body           = model.Body,
                ReportResponse = model
            };

            task.TaskReport.Add(report);
            task.IsComplete = model.IsApproved;
            RepositoryContext.Current.Update(project);

            if (task.Step == ProjectWorkflow.State.WaitInvolved)
            {
                if (project.Tasks.Any(t => t.Type == TaskTypes.InvolvedOrganiztion && t.TaskReport == null))
                {
                    ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                            Roles.GetRolesForUser(User.Identity.Name)).InvolvedOrganizationUpdate();
                }
                else
                {
                    ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                            Roles.GetRolesForUser(User.Identity.Name)).ToComission();
                }
            }

            return(RedirectToAction("Project", "BaseProject", new { id = project._id }));
        }
示例#11
0
        public ActionResult Triggers(string projectId, string trigger)
        {
            var project = RepositoryContext.Current.GetOne <Project>(p => p._id == projectId);

            if (project == null)
            {
                return(HttpNotFound("проект не найден"));
            }
            ProjectWorkflow.Trigger triggerEnum;
            Enum.TryParse(trigger, out triggerEnum);
            switch (triggerEnum)
            {
            case ProjectWorkflow.Trigger.FillInformation:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name, Roles.GetRolesForUser(User.Identity.Name))
                .FillInformation(project);
                break;

            case ProjectWorkflow.Trigger.UpdateInformation:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name, Roles.GetRolesForUser(User.Identity.Name))
                .UpdateInformation();
                break;

            case ProjectWorkflow.Trigger.ReOpen:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name, Roles.GetRolesForUser(User.Identity.Name))
                .ReOpen();
                break;

            case ProjectWorkflow.Trigger.InvestorResponsed:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name, Roles.GetRolesForUser(User.Identity.Name))
                .InvestorResponsed();
                break;

            case ProjectWorkflow.Trigger.InvestorSelected:
                return(InvestorSelected(project));

            case ProjectWorkflow.Trigger.DocumentUpdate:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name, Roles.GetRolesForUser(User.Identity.Name))
                .DocumentUpdate();
                break;

            case ProjectWorkflow.Trigger.FillInvolvedOrganization:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).FillInvolvedOrganization();
                break;

            case ProjectWorkflow.Trigger.InvolvedOrganizationUpdate:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).InvolvedOrganizationUpdate();
                break;

            case ProjectWorkflow.Trigger.ToComission:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).ToComission();
                break;

            case ProjectWorkflow.Trigger.Comission:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).Comission();
                break;

            case ProjectWorkflow.Trigger.ComissionFix:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).ComissionFix();
                break;

            case ProjectWorkflow.Trigger.ComissionFixUpdate:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).ComissionFixUpdate();
                break;

            case ProjectWorkflow.Trigger.ToIspolcom:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).ToIspolcom();
                break;

            case ProjectWorkflow.Trigger.Ispolcom:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).Ispolcom();
                break;

            case ProjectWorkflow.Trigger.ToIspolcomFix:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).ToIspolcomFix();
                break;

            case ProjectWorkflow.Trigger.IspolcomFixUpdate:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).IspolcomFixUpdate();
                break;

            case ProjectWorkflow.Trigger.ToMinEconomy:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).ToMinEconomy();
                break;

            case ProjectWorkflow.Trigger.MinEconomyResponsed:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).MinEconomyResponsed();
                break;

            case ProjectWorkflow.Trigger.UpdatePlan:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).UpdatePlan();
                break;

            case ProjectWorkflow.Trigger.ApprovePlan:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).ApprovePlan();
                break;

            case ProjectWorkflow.Trigger.UpdateRealization:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).UpdateRealization();
                break;

            case ProjectWorkflow.Trigger.RejectDocument:
                ProjectStateManager.StateManagerFactory(project, User.Identity.Name,
                                                        Roles.GetRolesForUser(User.Identity.Name)).RejectDocument();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(RedirectToAction("Project", "BaseProject", new { id = project._id }));
        }