public DtoActionResult Add(EntityComServerCluster cluster) { var actionResult = new DtoActionResult(); var validationResult = Validate(cluster, true); if (validationResult.Success) { if (cluster.IsDefault) { var clusters = _uow.ComServerClusterRepository.Get(x => x.IsDefault); foreach (var clust in clusters) { clust.IsDefault = false; _uow.ComServerClusterRepository.Update(clust, clust.Id); } } _uow.ComServerClusterRepository.Insert(cluster); _uow.Save(); actionResult.Success = true; actionResult.Id = cluster.Id; } else { return(new DtoActionResult() { ErrorMessage = validationResult.ErrorMessage }); } return(actionResult); }
protected void buttonAdd_OnClick(object sender, EventArgs e) { var comServerCluster = new EntityComServerCluster(); comServerCluster.Name = txtName.Text; comServerCluster.Description = txtDescription.Text; comServerCluster.IsDefault = chkDefault.Checked; var result = Call.ComServerClusterApi.Post(comServerCluster); if (result.Success) { var listOfServers = new List <EntityComServerClusterServer>(); foreach (GridViewRow row in gvServers.Rows) { var cb = (CheckBox)row.FindControl("chkSelector"); if (!cb.Checked) { continue; } var role = (DropDownList)row.FindControl("ddlRole"); var dataKey = gvServers.DataKeys[row.RowIndex]; if (dataKey == null) { continue; } var clusterServer = new EntityComServerClusterServer(); clusterServer.ComServerClusterId = result.Id; clusterServer.ComServerId = Convert.ToInt32(dataKey.Value); clusterServer.Role = role.Text; listOfServers.Add(clusterServer); } if (listOfServers.Count == 0) { EndUserMessage = "Successfully Added Cluster"; Response.Redirect("~/views/admin/comservers/editcomservercluster.aspx?level=2&clusterId=" + result.Id); } var finalResult = Call.ComClusterServerApi.Post(listOfServers); if (finalResult.Success) { EndUserMessage = "Successfully Added Cluster"; Response.Redirect("~/views/admin/comservers/editcomservercluster.aspx?level=2&clusterId=" + result.Id); } else { EndUserMessage = "Could Not Add Cluster"; } } else { EndUserMessage = result.ErrorMessage; } }
public DtoActionResult Post(EntityComServerCluster cluster) { var result = _comServerClusterService.Add(cluster); if (result.Success) { var auditLog = new EntityAuditLog(); auditLog.ObjectType = "ComServerCluster"; auditLog.ObjectId = result.Id; auditLog.ObjectName = cluster.Name; auditLog.ObjectJson = JsonConvert.SerializeObject(cluster); auditLog.UserId = _userId; auditLog.AuditType = EnumAuditEntry.AuditType.Create; _auditLogService.AddAuditLog(auditLog); } return(result); }
public DtoActionResult Update(EntityComServerCluster cluster) { var u = GetCluster(cluster.Id); if (u == null) { return new DtoActionResult { ErrorMessage = "Cluster Not Found", Id = 0 } } ; var actionResult = new DtoActionResult(); var validationResult = Validate(cluster, false); if (validationResult.Success) { if (cluster.IsDefault) { var clusters = _uow.ComServerClusterRepository.Get(x => x.IsDefault); foreach (var clust in clusters) { clust.IsDefault = false; _uow.ComServerClusterRepository.Update(clust, clust.Id); } } _uow.ComServerClusterRepository.Update(cluster, u.Id); _uow.Save(); actionResult.Success = true; actionResult.Id = cluster.Id; } else { return(new DtoActionResult() { ErrorMessage = validationResult.ErrorMessage }); } return(actionResult); }
public DtoActionResult Put(int id, EntityComServerCluster cluster) { cluster.Id = id; var result = _comServerClusterService.Update(cluster); if (result == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound)); } if (result.Success) { var auditLog = new EntityAuditLog(); auditLog.ObjectType = "ComServerCluster"; auditLog.ObjectId = result.Id; auditLog.ObjectName = cluster.Name; auditLog.ObjectJson = JsonConvert.SerializeObject(cluster); auditLog.UserId = _userId; auditLog.AuditType = EnumAuditEntry.AuditType.Update; _auditLogService.AddAuditLog(auditLog); } return(result); }
public DtoValidationResult Validate(EntityComServerCluster comServerCluster, bool isNew) { var validationResult = new DtoValidationResult { Success = true }; if (string.IsNullOrEmpty(comServerCluster.Name) || !comServerCluster.Name.All(c => char.IsLetterOrDigit(c) || c == '_' || c == '-' || c == ' ')) { validationResult.Success = false; validationResult.ErrorMessage = "Com Server Cluster Name Is Not Valid"; return(validationResult); } if (isNew) { if (_uow.ComServerClusterRepository.Exists(h => h.Name == comServerCluster.Name)) { validationResult.Success = false; validationResult.ErrorMessage = "A Com Server Cluster With This Name Already Exists"; return(validationResult); } } else { var original = _uow.ComServerClusterRepository.GetById(comServerCluster.Id); if (original.Name != comServerCluster.Name) { if (_uow.ComServerClusterRepository.Exists(h => h.Name == comServerCluster.Name)) { validationResult.Success = false; validationResult.ErrorMessage = "A Com Server Cluster With This Name Already Exists"; return(validationResult); } } } return(validationResult); }
public int?Run() { //Find the best multicast server to use var serverId = -1; if (_group.ClusterId == -1) //-1 is default cluster { _cluster = _uow.ComServerClusterRepository.GetFirstOrDefault(x => x.IsDefault); if (_cluster == null) { return(null); } } else { _cluster = _uow.ComServerClusterRepository.GetById(_group.ClusterId); if (_cluster == null) { return(null); } } var availableMulticastServers = _uow.ComServerClusterServerRepository.GetMulticastClusterServers(_cluster.Id); if (!availableMulticastServers.Any()) { return(null); } var taskInUseDict = new Dictionary <int, int>(); foreach (var mServer in availableMulticastServers) { var counter = new ServiceActiveMulticastSession().GetAll() .Count(x => x.ComServerId == mServer.ComServerId); taskInUseDict.Add(mServer.ComServerId, counter); } if (taskInUseDict.Count == 1) { serverId = taskInUseDict.Keys.First(); } else if (taskInUseDict.Count > 1) { var orderedInUse = taskInUseDict.OrderBy(x => x.Value); if (taskInUseDict.Values.Distinct().Count() == 1) { //all multicast server have equal tasks - randomly choose one. var index = _random.Next(0, taskInUseDict.Count); serverId = taskInUseDict[index]; } else { //Just grab the first one with the smallest queue, could be a duplicate but will eventually even out on it's own serverId = orderedInUse.First().Key; } } return(serverId); }