Exemple #1
0
        public ActionResult Index(int?roleId)
        {
            IEnumerable <int> userIds = null;

            if (roleId.HasValue)
            {
                userIds = this.userRoleRepository.Table.Where(c => c.Role.Id == roleId).Select(c => c.UserId).ToList();
            }
            else
            {
                userIds = this.userRepository.Table.Select(c => c.Id).ToList();
            }

            VersionOptions versionOptions = new VersionOptions();
            var            users          = this.services.ContentManager.GetMany <UserPart>(userIds, VersionOptions.Published, new QueryHints());

            bool isAjaxRequest = Request.IsAjaxRequest();

            if (isAjaxRequest)
            {
                AjaxMessageViewModel ajaxMessageModel = new AjaxMessageViewModel {
                    IsDone = true
                };
                ajaxMessageModel.Html = this.RenderPartialViewToString("Users", users);

                return(this.Json(ajaxMessageModel, JsonRequestBehavior.AllowGet));
            }
            else
            {
                // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.
                return(this.View((object)users));
            }
        }
Exemple #2
0
        protected ActionResult CreateActionResult(int contentItemId, string view, object ajaxData, Func <object> createFullModel)
        {
            if (Request.IsAjaxRequest())
            {
                AjaxMessageViewModel ajaxMessageModel = new AjaxMessageViewModel {
                    Id = contentItemId, IsDone = ModelState.IsValid, Data = ajaxData
                };
                foreach (var errorGroup in this.ModelState.Where(c => c.Value.Errors.Count > 0))
                {
                    foreach (var error in errorGroup.Value.Errors)
                    {
                        string errorMessage = error.Exception != null ? "An exception happens in server" : error.ErrorMessage;
                        ajaxMessageModel.Errors.Add(new KeyValuePair <string, string>(errorGroup.Key, error.ErrorMessage));
                    }
                }

                return(this.Json(ajaxMessageModel, JsonRequestBehavior.AllowGet));
            }
            else
            {
                object model = null;

                if (createFullModel != null)
                {
                    model = createFullModel();
                }

                return(this.View(view, model));
            }
        }
Exemple #3
0
        public ActionResult CopySuiteToOrchardProjects(CopyOrchardProjectToSuiteViewModel model)
        {
            if (!this.services.Authorizer.Authorize(Permissions.ManageSuiteCRMPermission, T("Not authorized to see list of SuiteCRM projects")))
            {
                return(new HttpUnauthorizedResult());
            }

            if (!this.ModelState.IsValid)
            {
                AjaxMessageViewModel errorModel = this.CreateAjaxModel(null);
                return(this.Json(errorModel, JsonRequestBehavior.AllowGet));
            }

            var projects    = this.syncService.CopySuiteCRMProjectsToOrchard(model);
            var resultModel = new MainViewModel();

            resultModel.Projects.AddRange(projects);
            resultModel.SuiteCRMProjectsCount             = this.suiteCRMDataService.ProjectCount();
            resultModel.OrchardCollaborationProjectsCount = this.projectService.GetProjectsCount();

            foreach (var project in resultModel.Projects.Where(c => c.OrchardCollaborationProject != null))
            {
                project.OrchardProjectShape = this.services.ContentManager.BuildDisplay(project.OrchardCollaborationProject, displayType: "SyncTitleSummary");
            }

            AjaxMessageViewModel ajaxMessageModel = this.CreateAjaxModel(resultModel);

            return(this.Json(JsonConvert.SerializeObject(ajaxMessageModel)));
        }
Exemple #4
0
        public ActionResult CopyOrchardTicketToSuiteTasks(CopyOrchardTasksToSuiteViewModel model)
        {
            if (!this.contentOwnershipService.IsCurrentUserOperator())
            {
                return(new HttpUnauthorizedResult());
            }

            if (!this.ModelState.IsValid)
            {
                AjaxMessageViewModel errorModel = this.CreateAjaxModel(null);
                return(this.Json(errorModel, JsonRequestBehavior.AllowGet));
            }

            var resultModel = this.syncService.CopyOrchardTicketsToSuite(model);

            foreach (var task in resultModel)
            {
                task.SuiteCRMUrl = Helper.GetTaskAddressInSuiteCRM(
                    this.services,
                    task.SuiteCRMTaskId,
                    task.IsProjectTask ? SuiteCRMTaskPart.SuiteCRMProjectTaskTypeValue : SuiteCRMTaskPart.SuiteCRMTaskTypeValue);
            }

            AjaxMessageViewModel ajaxMessageModel = this.CreateAjaxModel(resultModel);

            return(this.Json(JsonConvert.SerializeObject(ajaxMessageModel)));
        }
Exemple #5
0
        public ActionResult GetSuiteCRMContact(string email)
        {
            if (!this.contentOwnershipService.IsCurrentUserOperator())
            {
                return(new HttpUnauthorizedResult());
            }

            var contact = this.suiteCRMDataService.GetContact(email);

            dynamic model = new ExpandoObject();

            if (contact == null)
            {
                model.Found = false;
            }
            else
            {
                model.Found     = true;
                model.ContactId = contact.bean_id;
                model.Url       = Helper.GetContactAddressInSuiteCRM(this.services, contact.bean_id);
            }

            AjaxMessageViewModel ajaxMessageModel = this.CreateAjaxModel(model);

            return(this.Json(JsonConvert.SerializeObject(ajaxMessageModel)));
        }
Exemple #6
0
        public ActionResult ProjectMilestones(int projectId)
        {
            // check user is operator
            if (!this.crmContentOwnershipService.IsCurrentUserOperator())
            {
                return(HttpNotFound());
            }

            var project = this.services.ContentManager.Get(projectId);

            if (!this.crmContentOwnershipService.CurrentUserCanViewContent(project))
            {
                ModelState.AddModelError("ProjectId", new OrchardSecurityException(T("You are not authorized to view the item")));
                return(this.CreateActionResultBasedOnAjaxRequest(null, null));
            }

            var milestones = this.milestoneService.GetOpenMilestones(projectId);

            EditAttachToViewModel model = new EditAttachToViewModel();

            Converter.Fill(model.Items, milestones);

            AjaxMessageViewModel returnValue = new AjaxMessageViewModel {
                IsDone = true, Data = model
            };

            return(this.Json(returnValue, JsonRequestBehavior.AllowGet));
        }
Exemple #7
0
        public ActionResult Users(int?page)
        {
            int pageSize = this.services.WorkContext.CurrentSite.PageSize;

            page = page ?? 0;

            if (!this.services.Authorizer.Authorize(Permissions.ManageSuiteCRMPermission, T("Not authorized to see list of SuiteCRM projects")))
            {
                return(new HttpUnauthorizedResult());
            }

            if (!this.SuiteCRMConnectionIsReady())
            {
                return(RedirectToAction("Settings"));
            }

            MainViewModel model = new MainViewModel();

            model.Users.AddRange(this.suiteCRMSyncUserService.GetUsers(page.Value, pageSize));
            model.SuiteCRMUsersCount = this.suiteCRMSyncUserService.GetSuiteCRMUsersCount();
            model.PageSize           = pageSize;
            model.SuiteCRMPage       = page.Value;
            model.ViewUsersPage      = true;

            if (this.Request.IsAjaxRequest())
            {
                AjaxMessageViewModel ajaxMessageModel = this.CreateAjaxModel(model);
                return(this.Json(JsonConvert.SerializeObject(ajaxMessageModel)));
            }
            else
            {
                return(View("Index", model));
            }
        }
Exemple #8
0
 public static void AddModelStateErrors(ModelStateDictionary modelState, AjaxMessageViewModel ajaxMessageModel)
 {
     foreach (var errorGroup in modelState.Where(c => c.Value.Errors.Count > 0))
     {
         foreach (var error in errorGroup.Value.Errors)
         {
             string errorMessage = error.Exception != null ? "An exception happens in server" : error.ErrorMessage;
             ajaxMessageModel.Errors.Add(new KeyValuePair <string, string>(errorGroup.Key, error.ErrorMessage));
         }
     }
 }
Exemple #9
0
        public ActionResult Index(int?page, bool?listedBasedOnSuiteCRM)
        {
            int pageSize = this.services.WorkContext.CurrentSite.PageSize;

            page = page ?? 0;
            listedBasedOnSuiteCRM = listedBasedOnSuiteCRM.HasValue ? listedBasedOnSuiteCRM.Value : true;

            if (!this.services.Authorizer.Authorize(Permissions.ManageSuiteCRMPermission, T("Not authorized to see list of SuiteCRM projects")))
            {
                return(new HttpUnauthorizedResult());
            }

            if (!this.SuiteCRMConnectionIsReady())
            {
                return(RedirectToAction("Settings"));
            }

            MainViewModel model = new MainViewModel();

            model.Projects.AddRange(this.syncService.GetProjects(page.Value, pageSize, listedBasedOnSuiteCRM.Value));

            model.SuiteCRMProjectsCount             = this.suiteCRMDataService.ProjectCount();
            model.OrchardCollaborationProjectsCount = this.projectService.GetProjectsCount();
            model.PageSize = pageSize;
            if (listedBasedOnSuiteCRM.Value)
            {
                model.OrchardCollaborationPage = 0;
                model.SuiteCRMPage             = page.Value;
            }
            else
            {
                model.OrchardCollaborationPage = page.Value;
                model.SuiteCRMPage             = 0;
            }

            model.ListedBasedOnSuiteCRM = listedBasedOnSuiteCRM.Value;
            model.ViewUsersPage         = false;

            foreach (var project in model.Projects.Where(c => c.OrchardCollaborationProject != null))
            {
                project.OrchardProjectShape = this.services.ContentManager.BuildDisplay(project.OrchardCollaborationProject, displayType: "SyncTitleSummary");
            }

            if (this.Request.IsAjaxRequest())
            {
                AjaxMessageViewModel ajaxMessageModel = this.CreateAjaxModel(model);
                return(this.Json(JsonConvert.SerializeObject(ajaxMessageModel)));
            }
            else
            {
                return(View(model));
            }
        }
        protected ActionResult CreateActionResultBasedOnAjaxRequest(dynamic model, string partialView, string mainView, string returnUrl)
        {
            bool isAjaxRequest = Request.IsAjaxRequest();

            if (isAjaxRequest)
            {
                AjaxMessageViewModel ajaxMessageModel = new AjaxMessageViewModel {
                    IsDone = true
                };
                ajaxMessageModel.Data = JsonConvert.SerializeObject(model);

                if (!ModelState.IsValid)
                {
                    foreach (var valueModel in ModelState)
                    {
                        foreach (var errorModel in valueModel.Value.Errors)
                        {
                            string error = errorModel.Exception != null ? errorModel.Exception.Message : errorModel.ErrorMessage;
                            ajaxMessageModel.Errors.Add(new KeyValuePair <string, string>(valueModel.Key, error));
                        }
                    }
                }

                if (model != null)
                {
                    this.widgetService.GetWidgets(model, this.HttpContext);
                }

                if (!string.IsNullOrEmpty(partialView))
                {
                    ajaxMessageModel.Html = CRMHelper.RenderPartialViewToString(this, partialView, model);
                }

                return(this.Json(ajaxMessageModel, JsonRequestBehavior.AllowGet));
            }
            else
            {
                if (!string.IsNullOrEmpty(returnUrl))
                {
                    return(this.Redirect(returnUrl));
                }
                else if (string.IsNullOrEmpty(mainView))
                {
                    // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.
                    return(this.View((object)model));
                }
                else
                {
                    return(this.View(mainView, (object)model));
                }
            }
        }
        public IActionResult AjaxPostMessage(AjaxMessageViewModel viewModel)
        {
            Message postMessage = new Message()
            {
                MessageBody = viewModel.message,
                UserId      = (int)HttpContext.Session.GetInt32("UserId"),
                ActivityId  = viewModel.activityId,
            };

            dbContext.Messages.Add(postMessage);
            dbContext.SaveChanges();
            return(new EmptyResult());
        }
Exemple #12
0
        private AjaxMessageViewModel CreateAjaxModel(object model)
        {
            AjaxMessageViewModel ajaxMessageModel = new AjaxMessageViewModel {
                Data = model, IsDone = this.ModelState.IsValid
            };

            foreach (var item in ModelState)
            {
                ajaxMessageModel.Errors.AddRange(item.Value.Errors.Select(c => new KeyValuePair <string, string>(item.Key, c.Exception != null ? c.Exception.Message : c.ErrorMessage)).Where(c => !string.IsNullOrEmpty(c.Value)));
            }

            return(ajaxMessageModel);
        }
        private AjaxMessageViewModel CreateAjaxMessageModel(ContentItem contentItem, string returnedShape)
        {
            AjaxMessageViewModel ajaxMessageModel = new AjaxMessageViewModel {
                Id = contentItem.Id, IsDone = true, Data = Newtonsoft.Json.JsonConvert.SerializeObject(contentItem)
            };

            if (!string.IsNullOrEmpty(returnedShape))
            {
                dynamic returnedShapeModel = new Composite();
                returnedShapeModel.ContentItem   = contentItem;
                returnedShapeModel.IsAlternative = false;
                ajaxMessageModel.Html            = this.RenderShapePartial(returnedShapeModel, returnedShape);
            }

            return(ajaxMessageModel);
        }
Exemple #14
0
        public ActionResult QueryCount()
        {
            int count = 0;

            if (services.WorkContext.CurrentUser != null &&
                (this.crmContentOwnershipService.IsCurrentUserCustomer() || this.crmContentOwnershipService.IsCurrentUserOperator()))
            {
                count = this.activityNotificationService.NewItemsCount();
            }

            AjaxMessageViewModel returnValue = new AjaxMessageViewModel {
                IsDone = true, Data = new { Count = count }
            };

            return(this.Json(returnValue, JsonRequestBehavior.AllowGet));
        }
Exemple #15
0
        public ActionResult CopySuiteCRMUsersToOrchardPost(CopySuiteCRMUsersToOrchardViewModel model)
        {
            if (!this.services.Authorizer.Authorize(Permissions.ManageSuiteCRMPermission, T("Not authorized to see list of SuiteCRM projects")))
            {
                return(new HttpUnauthorizedResult());
            }

            if (!this.ModelState.IsValid)
            {
                AjaxMessageViewModel errorModel = this.CreateAjaxModel(null);
                return(this.Json(errorModel, JsonRequestBehavior.AllowGet));
            }

            var users = this.suiteCRMSyncUserService.CopySuiteCRMUsersToOrchard(model);

            AjaxMessageViewModel ajaxMessageModel = this.CreateAjaxModel(users);

            return(this.Json(JsonConvert.SerializeObject(ajaxMessageModel)));
        }
        protected AjaxMessageViewModel CreateAjaxMessageModel(ContentItem contentItem, string returnedShape)
        {
            var data = JsonConvert.SerializeObject(contentItem);
            int id   = contentItem != null ? contentItem.Id : default(int);

            AjaxMessageViewModel ajaxMessageModel = new AjaxMessageViewModel {
                Id = id, IsDone = ModelState.IsValid, Data = data
            };

            if (!string.IsNullOrEmpty(returnedShape))
            {
                dynamic returnedShapeModel = new Composite();
                returnedShapeModel.ContentItem   = contentItem;
                returnedShapeModel.IsAlternative = false;
                ajaxMessageModel.Html            = this.RenderShapePartial(returnedShapeModel, returnedShape);
            }

            return(ajaxMessageModel);
        }
Exemple #17
0
        public ActionResult UpdateVisit(int activityStreamId)
        {
            if (services.WorkContext.CurrentUser == null)
            {
                throw new OrchardSecurityException(T("You don't have authorization to do the query"));
            }

            if (!this.crmContentOwnershipService.IsCurrentUserCustomer() && !this.crmContentOwnershipService.IsCurrentUserOperator())
            {
                throw new OrchardSecurityException(T("You don't have authorization to do the query"));
            }

            this.activityNotificationService.UpdateLastVisitActivity(activityStreamId);

            AjaxMessageViewModel returnValue = new AjaxMessageViewModel {
                IsDone = true
            };

            return(this.Json(returnValue, JsonRequestBehavior.AllowGet));
        }
        public virtual ActionResult Edit(int[] ids, string returnUrl)
        {
            var model = this.CreateEditPermissionsModel(ids);

            model.ReturnUrl = returnUrl;

            if (Request.IsAjaxRequest())
            {
                AjaxMessageViewModel ajaxMessageModel = new AjaxMessageViewModel {
                    IsDone = true
                };
                this.widgetService.GetWidgets(model, this.HttpContext);
                ajaxMessageModel.Html = CRMHelper.RenderPartialViewToString(this, "Edit", model);

                return(this.Json(ajaxMessageModel, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(View(model));
            }
        }
        protected ActionResult CreateActionResult(int contentItemId, string view, object ajaxData, Func <object> createFullModel)
        {
            if (Request.IsAjaxRequest())
            {
                AjaxMessageViewModel ajaxMessageModel = new AjaxMessageViewModel {
                    Id = contentItemId, IsDone = ModelState.IsValid, Data = ajaxData
                };
                CRMHelper.AddModelStateErrors(this.ModelState, ajaxMessageModel);

                return(this.Json(ajaxMessageModel, JsonRequestBehavior.AllowGet));
            }
            else
            {
                object model = null;

                if (createFullModel != null)
                {
                    model = createFullModel();
                }

                return(this.View(view, model));
            }
        }
Exemple #20
0
        public ActionResult QuickUpdate(TicketQuickUpdateViewModel model, string displyType)
        {
            if (!this.crmContentOwnershipService.IsCurrentUserOperator() && !this.crmContentOwnershipService.IsCurrentUserCustomer())
            {
                return(new HttpUnauthorizedResult());
            }

            if (model.Ids.Count == 0)
            {
                this.ModelState.AddModelError("Ids", "The model must contains minimum one contentItem.Id");
            }

            var tickets = this.contentManager.GetMany <TicketPart>(model.Ids, VersionOptions.DraftRequired, new QueryHints().ExpandRecords(new[] { "TicketPartRecord", "ContentItemPermissionPartRecord" })).ToList();

            if (tickets.Count != model.Ids.Count)
            {
                return(HttpNotFound());
            }

            bool afterUpdateUserStillCanChangeOwnership = true;

            if (ModelState.IsValid)
            {
                foreach (var ticket in tickets)
                {
                    var contentItem = ticket.ContentItem;

                    var context = new UpdateContentContext(contentItem);

                    this.Handlers.Invoke(handler => handler.Updating(context), Logger);

                    if (contentItem == null)
                    {
                        return(HttpNotFound());
                    }

                    if (!this.IsEditAuthorized(contentItem))
                    {
                        this.ModelState.AddModelError("Ids", T("You don't have right access to change these items").Text);
                        return(this.CreateActionResultBasedOnAjaxRequest(null, null));
                    }

                    dynamic snapshot = this.streamService.TakeSnapshot(contentItem);

                    if (model.UpdateBusinessUnitId || model.UpdateTeamId || model.UpdateUserId)
                    {
                        PostedEditOwnerViewModel postedEditOwnerViewModel = new PostedEditOwnerViewModel();
                        postedEditOwnerViewModel.UserId = model.UpdateUserId ? model.UserId : null;

                        if (model.BusinessUnitId.HasValue)
                        {
                            postedEditOwnerViewModel.GroupId = model.UpdateBusinessUnitId ?
                                                               "BusinessUnit:" + model.BusinessUnitId.Value.ToString(CultureInfo.InvariantCulture) : string.Empty;
                        }

                        if (model.UpdateTeamId && model.TeamId.HasValue)
                        {
                            postedEditOwnerViewModel.GroupId = "Team:" + model.TeamId.Value.ToString(CultureInfo.InvariantCulture);
                        }

                        this.EditOwner(contentItem, postedEditOwnerViewModel, false, false);
                        afterUpdateUserStillCanChangeOwnership = this.crmContentOwnershipService.CurrentUserIsContentItemAssignee(contentItem) || this.services.Authorizer.Authorize(Permissions.AdvancedOperatorPermission);
                    }

                    TicketPart ticketPart = contentItem.As <TicketPart>();

                    // Title
                    if (!string.IsNullOrEmpty(model.Title))
                    {
                        ticketPart.Record.Title = model.Title;
                    }

                    // Description
                    if (model.UpdateDescription)
                    {
                        ticketPart.Record.Description = model.Description;
                    }

                    // Priority
                    if (model.PriorityId.HasValue)
                    {
                        ticketPart.Record.PriorityRecord = new PriorityRecord {
                            Id = model.PriorityId.Value
                        };
                    }
                    else if (model.UpdatePriority)
                    {
                        ticketPart.Record.PriorityRecord = null;
                    }

                    // serviceId
                    if (model.ServiceId.HasValue)
                    {
                        ticketPart.Record.Service = new ServiceRecord {
                            Id = model.ServiceId.Value
                        };
                    }
                    else if (model.UpdateServiceId)
                    {
                        ticketPart.Record.Service = null;
                    }

                    // statusId
                    if (model.StatusId.HasValue)
                    {
                        ticketPart.Record.StatusRecord = new StatusRecord {
                            Id = model.StatusId.Value
                        };
                    }
                    else if (model.UpdateStatusId)
                    {
                        ticketPart.Record.StatusRecord = null;
                    }

                    // TicketTypeId
                    if (model.TypeId.HasValue)
                    {
                        ticketPart.Record.TicketType = new TicketTypeRecord {
                            Id = model.TypeId.Value
                        };
                    }
                    else if (model.UpdateTypeId)
                    {
                        ticketPart.Record.TicketType = null;
                    }

                    // DueDate
                    if (model.DueDate.HasValue)
                    {
                        ticketPart.Record.DueDate = model.DueDate.Value;
                    }
                    else if (model.UpdateDueDate)
                    {
                        ticketPart.Record.DueDate = null;
                    }

                    this.Handlers.Invoke(handler => handler.Updated(context), Logger);

                    contentManager.Publish(contentItem);

                    this.streamService.WriteChangesToStreamActivity(contentItem, snapshot, StreamWriters.TicketStreamWriter);
                    var documentIndex = this.indexProvider.New(contentItem.Id);
                    this.contentManager.Index(contentItem, documentIndex);
                    this.indexProvider.Store(TicketController.SearchIndexName, documentIndex);
                }
            }

            bool isAjaxRequest = Request.IsAjaxRequest();

            if (isAjaxRequest)
            {
                displyType = string.IsNullOrEmpty(displyType) ? "Summary" : displyType;
                List <dynamic> shapes = new List <dynamic>();

                foreach (var contentItem in tickets)
                {
                    var shape = this.contentManager.BuildDisplay(tickets[0].ContentItem, displayType: displyType);
                    shapes.Add(shape);
                }

                var data = new
                {
                    Tickets = Newtonsoft.Json.JsonConvert.SerializeObject(shapes),
                    ChangeOwnershipIsPossible = afterUpdateUserStillCanChangeOwnership
                };

                AjaxMessageViewModel ajaxMessageModel = new AjaxMessageViewModel {
                    Id = tickets[0].ContentItem.Id, IsDone = ModelState.IsValid, Data = data
                };

                foreach (var item in ModelState)
                {
                    ajaxMessageModel.Errors.AddRange(item.Value.Errors.Select(c => new KeyValuePair <string, string>(item.Key, c.Exception != null ? c.Exception.Message : c.ErrorMessage)).Where(c => !string.IsNullOrEmpty(c.Value)));
                }

                return(this.Json(ajaxMessageModel, JsonRequestBehavior.AllowGet));
            }
            else if (!string.IsNullOrEmpty(model.returnUrl))
            {
                return(this.Redirect(model.returnUrl));
            }
            else
            {
                return(this.RedirectToAction("Edit", new RouteValueDictionary {
                    { "Id", tickets[0].ContentItem.Id }
                }));
            }
        }