public static void EstimationAlarm(int ID, int prim, int estim) { foreach (var user in MPSUser.EnumAllUsers(true).Where(x => x.ESTIMALARM)) { SendMessage(user.CHATID, $"Estimation alarm (from primary {prim} hours to {estim} hours): {Settings.CurrentSettings.GetTTAnchor(ID, "bell.png")}"); } }
public void NotifyDefect(string ttid, string message, string img, bool alsoteam) { try { if (!CurrentContext.Valid) { throw new Exception("NotifyDefect called without loggin in!"); } Defect d = new Defect(ttid); DefectUser du = new DefectUser(d.AUSER); if (du.TRID > -1) { MPSUser worker = new MPSUser(du.TRID); string mess2send = $"TT{ttid} update from {CurrentContext.UserName()}: {message.Replace("<", "<").Replace(">", ">")}{Settings.CurrentSettings.GetTTAnchor(int.Parse(ttid), img)}"; TasksBot.SendMessage(worker.CHATID, mess2send); if (alsoteam) { TestChannel.SendMessage(mess2send); } } } catch (Exception e) { Logger.Log(e); } }
public void SendMessage(int fromID, int toID, string message) { MPSUser from = new MPSUser(fromID); MPSUser to = new MPSUser(toID); TasksBot.SendMessage(to.CHATID, $"⚠️{from.PERSON_NAME}: {message}"); }
public void SendTaskMessage(int fromID, int toID, string message, int ttid, string image) { MPSUser from = new MPSUser(fromID); MPSUser to = new MPSUser(toID); TasksBot.SendMessage(to.CHATID, $"{from.PERSON_NAME}: {message}{Settings.CurrentSettings.GetTTAnchor(ttid, image)}"); }
public static void AddRequestByTask(int ttid, string notes, BuildType type) { var defect = new Defect(ttid); var settings = Settings.CurrentSettings; var emial = MPSUser.FindUserbyPhone(settings.AUTOBOTPHONE).EMAIL; var urlBase = new UriBuilder(settings.BUILDMICROSEVICE) { Scheme = Uri.UriSchemeHttps, Port = -1, }; var url = new Uri(urlBase.ToString().TrimEnd('/') + "/addBuild"); var Client = new RestClient(url.ToString()); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "ApiKey " + settings.BUILDMICROSEVICEKEY); request.AddParameter("id", ttid, ParameterType.QueryString); request.AddParameter("summary", defect.SUMMARY, ParameterType.QueryString); request.AddParameter("mail", emial, ParameterType.QueryString); request.AddParameter("branch", defect.BRANCH, ParameterType.QueryString); request.AddParameter("notes", notes, ParameterType.QueryString); request.AddParameter("type", (int)type, ParameterType.QueryString); request.AddParameter("batches", string.Join(",", defect.BSTBATCHES.Split('\n')), ParameterType.QueryString); request.AddParameter("commands", string.Join(",", defect.BSTCOMMANDS.Split('\n')), ParameterType.QueryString); request.AddParameter("priority", defect.TESTPRIORITY, ParameterType.QueryString); request.AddParameter("owner", emial, ParameterType.QueryString); var response = Client.Execute(request); //AddObject(_Tabl, new string[] { _par, _not, _User, _dateB, _type }, new object[] { Defect.GetIDbyTT(ttid), notes, CurrentContext.User.TTUSERID, DateTime.Now, (int)type }, _pid); }
public void AddMessage(string mess, int userid) { MPSUser u = new MPSUser(userid); DESCR = $@" <task-message clr='undefined' userid='{userid}' user='******' time='{DateTime.Now.ToString()}'> {mess} </task-message> " + DESCR.Trim(); }
public async Task <bool> SetGloabalDispo(int ttid, GlobalDispo dispo, string email) { var dispRef = await DefectDispo.GetDispoFromGlobal(dispo); string currentlock = Guid.NewGuid().ToString(); var user = DefectUser.FindByEmail(email); if (user == null) { return(false); } LockInfo li = await Defect.LocktaskAsync(ttid.ToString(), currentlock, user.TRID.ToString(), true); Defect d = new Defect(ttid); d.SetUpdater(new MPSUser(user.TRID)); d.DISPO = dispRef.idRecord.ToString(); if (d.PRIMARYHOURS == null) { d.PRIMARYHOURS = d.SPENT; } d.Store(); DefectEvent.AddEventByTask(d.IDREC, DefectEvent.Eventtype.QualityAssurance, user.ID, "Changed disposition to " + dispo); await Defect.UnLocktaskAsync(user.TRID.ToString(), currentlock); var settings = Settings.CurrentSettings; if (d.ID.ToString() == settings.RELEASETTID) { if (dispo == GlobalDispo.testStarted) { VersionBuilder.SendAlarm("✅Release build has been finished. Testing is starting..."); } else { VersionBuilder.SendAlarm("❌Failed to build version. Please check the logs!!!"); } } else { DefectUser du = new DefectUser(d.AUSER); MPSUser worker = new MPSUser(du.TRID); var attr = dispo.GetAttributeOfType <DisplayAttribute>(); TasksBot.SendMessage(worker.CHATID, $"{attr.Description}. The task tests have been marked as {dispRef.Descriptor} by automation system. {settings.GetTTAnchor(ttid, attr.Name)}"); if (dispo == GlobalDispo.testStarted) { string mess = $"New task from {user.FULLNAME} is ready for tests!{settings.GetTTAnchor(ttid, d.FIRE ? "taskfire.png" : "")}"; await TestChannel.SendMessageAsync(mess); } } return(true); }
public static void NotifyBuildStatusChange(int id, int ttid, int userid, string message, string ttimg) { string mess = $"Build Request: {message}{Settings.CurrentSettings.GetTTAnchor(ttid, ttimg)}"; DefectUser u = new DefectUser(userid); if (u.TRID < 1) { return; //assigned user is not specified - old tasks } MPSUser mpu = new MPSUser(u.TRID); TasksBot.SendMessage(mpu.CHATID, mess); }
public string setusers(List <MPSUser> users) { CurrentContext.ValidateAdmin(); foreach (MPSUser u in users) { MPSUser ustore = new MPSUser(u.ID); ustore.FromAnotherObject(u); if (ustore.IsModified()) { ustore.Store(); } } return("OK"); }
private static async void BotOnUpdateReceived(object sender, UpdateEventArgs e) { var message = e.Update.Message; if (Settings.CurrentSettings.TELEGRAMCOMPANYCHANNEL == message.Chat.Id.ToString()) { //ignore company chats return; } if (message == null || message.Type != MessageType.Text) { return; } string text = message.Text.ToUpper(); if (text == "/START") { await _client.SendTextMessageAsync(message.Chat.Id, $"Hi, {message.Chat.FirstName}, type /subscribe:xxx"); await _client.SendTextMessageAsync(message.Chat.Id, "where xxx is the your phone number in intentional format: +375..."); return; } else if (text.StartsWith(_comSubs)) { string num = Regex.Replace(text.Remove(0, "_comSubs".Length), "[^0-9]", ""); await _client.SendTextMessageAsync(message.Chat.Id, $"Your number is: {num}"); MPSUser u = MPSUser.FindUserbyPhone(num); if (u == null) { await _client.SendTextMessageAsync(message.Chat.Id, $"User no found, phone: {num}"); return; } await _client.SendTextMessageAsync(message.Chat.Id, $"User {u.PERSON_NAME} was found! Subscribing..."); u.CHATID = message.Chat.Id.ToString(); u.Store(); await _client.SendTextMessageAsync(message.Chat.Id, $"User {u.PERSON_NAME} has been subscribed!"); return; } await _client.SendTextMessageAsync(message.Chat.Id, "Wrong command. Press /start to see more information"); }
static public List <Tracker> Enum(int user) { if (user < 0) { return(new List <Tracker>()); } DefectUser usr = new DefectUser(user); MPSUser mpu = new MPSUser(usr.TRID); string filter = mpu.ISCLIENT ? $"WHERE {_Own} = {user} OR {_Cli} = {user} ORDER BY {_Nam} asc" : $"WHERE {_Own} = {user} OR {_Cli} is not null ORDER BY {_Nam} asc"; List <Tracker> res = new List <Tracker>(); foreach (DataRow r in (new Tracker()).GetRecords(filter)) { Tracker d = new Tracker(); d.Load(r); res.Add(d); } return(res); }
public string scheduledBuild() { if (HttpContext.Current.Request.Url.Host.ToUpper() != "LOCALHOST") { return("Rejected: Schedule can be run only locally."); } MPSUser u = MPSUser.FindUserbyPhone(Settings.CurrentSettings.AUTOBOTPHONE); if (u == null || !u.ISADMIN) { return("No auto bot users found with admin rights."); } CurrentContext.User = u; VersionBuilder.PrepareGit(); VersionBuilder.VersionIncrement(); VersionBuilder.PushRelease(); VersionBuilder.SendVersionAlarm(); addBuildByTask(Settings.CurrentSettings.RELEASETTID, "Automated Build", btboth); return("OK"); }
static public string Push(string ttid) { CurrentContext.ValidateAdmin(); if (!Lock()) { return("Locked by another user!"); } Git git = getGit(); List <string> res = new List <string>(); DefectBase d = new DefectBase(ttid); res.AddRange(git.PushOrigin()); git.DeleteBranch(d.BRANCH); res.AddRange(git.Status()); DefectUser ttu = new DefectUser(d.AUSER); MPSUser mpu = new MPSUser(ttu.TRID); string mess = $"Task commit has been pushed to master by {CurrentContext.UserName()}{Settings.CurrentSettings.GetTTAnchor(d.ID, "git-pull-request.png")}"; TasksBot.SendMessage(mpu.CHATID, mess); return(string.Join(Environment.NewLine, res.ToArray()).Replace(Environment.NewLine, "<br/>")); }
public void addVacation(string summary, int ttuserid, int num) { if (string.IsNullOrEmpty(summary) || ttuserid < 1 || num < 1 || num > 100) { return; } for (int i = 0; i < num; i++) { DefectBase d = new DefectBase(Defect.New(summary + " #" + (i + 1).ToString())); d.AUSER = ttuserid.ToString(); d.ESTIM = 8; d.COMP = DefectComp.GetVacationRec()[0].ToString(); List <int> disp = DefectDispo.EnumCannotStartIDs(); if (disp.Count > 0) { d.DISPO = disp[0].ToString(); } d.DATE = new DateTime(DateTime.Now.Year, 12, 31).ToString(defDateFormat); d.Store(); } MPSUser mpu = new MPSUser(new DefectUser(ttuserid).TRID); TasksBot.SendMessage(mpu.CHATID, $"{num} vacation tasks have been created for you by {CurrentContext.UserName()}"); }
public void NotifyDefectWorker(string ttid, string message, string userphone) { try { MPSUser bsu = MPSUser.FindUserbyPhone(userphone); if (bsu == null) { Logger.Log($"Cannot update task {ttid} by testing system. User was not found by phone number: {userphone}"); return; } Defect d = new Defect(ttid); DefectUser du = new DefectUser(d.AUSER); if (du.TRID > -1) { MPSUser worker = new MPSUser(du.TRID); TasksBot.SendMessage(worker.CHATID, message); } } catch (Exception e) { Logger.Log(e); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString[CurrentContext.retiredURL] != null) { message.Text = "This user has retired!"; } CurrentContext.User = null; return; } CurrentContext.User = MPSUser.FindUser(usr.Text, pwd.Text); if (CurrentContext.Valid) { if (keeplogged.Checked) { HttpCookie c = new HttpCookie( CurrentContext.ucook, CurrentContext.User.ID.ToString()) { Expires = DateTime.Today.AddYears(1) }; Response.Cookies.Add(c); } if (Request.QueryString[SecurityPage.returl] != null) { Response.Redirect(Request.QueryString[SecurityPage.returl].ToString(), false); } else { Response.Redirect("~/", false); } Context.ApplicationInstance.CompleteRequest(); return; } }
public MPSUser newUser() { CurrentContext.ValidateAdmin(); return(MPSUser.NewUser()); }
public void SetUpdater(MPSUser u) { _updater = u; }
static void ThreadLogin(MPSUser u) { _threadContext[Thread.CurrentThread.ManagedThreadId] = u; }
private static async void BotOnUpdateReceived(object sender, UpdateEventArgs e) { var message = e.Update.Message; if (message != null && Settings.CurrentSettings.TELEGRAMSUPPORTGROUP == message.Chat.Id.ToString()) { //ignore company chats return; } if (message == null || message.Type != MessageType.Text) { return; } string text = message.Text.ToUpper(); if (text == "/START") { await _client.SendTextMessageAsync(message.Chat.Id, $"Hi, {message.Chat.FirstName}, type /subscribe:xxx"); await _client.SendTextMessageAsync(message.Chat.Id, "where xxx is the your phone number in intentional format: +375..."); return; } else if (text.StartsWith(_comSubs)) { string num = Regex.Replace(text.Remove(0, "_comSubs".Length), "[^0-9]", ""); await _client.SendTextMessageAsync(message.Chat.Id, $"Your number is: {num}"); MPSUser u = MPSUser.FindUserbyPhone(num); if (u == null) { await _client.SendTextMessageAsync(message.Chat.Id, $"User no found, phone: {num}"); return; } await _client.SendTextMessageAsync(message.Chat.Id, $"User {u.PERSON_NAME} was found! Subscribing..."); u.SUPCHATID = message.Chat.Id.ToString(); u.Store(); await _client.SendTextMessageAsync(message.Chat.Id, $"User {u.PERSON_NAME} has been subscribed!"); return; } List <MPSUser> ls = MPSUser.EnumAllSupporters(); foreach (var user in ls) { if (user.SUPCHATCLIENTID == message.Chat.Id.ToString()) { await _client.SendTextMessageAsync(user.SUPCHATID, message.Text); return; } if (user.SUPCHATID == message.Chat.Id.ToString()) { if (!string.IsNullOrEmpty(user.SUPCHATCLIENTID)) { await _client.SendTextMessageAsync(user.SUPCHATCLIENTID, message.Text); return; } else { await _client.SendTextMessageAsync(user.SUPCHATID, "type /select to select user to answer"); return; } } } foreach (var user in ls) { await _client.SendTextMessageAsync(message.Chat.Id, $"{message.From.FirstName} {message.From.LastName} Sent the message:"); await _client.SendTextMessageAsync(user.SUPCHATID, message.Text); } await _client.SendTextMessageAsync(message.Chat.Id, "Hi! Response to your message is pending..."); }
public List <MPSUser> getMPSUsers(bool active) { return(MPSUser.EnumAllUsers(active)); }
public void SetTaskTestStatus(string ttid, string failed, string userphone) { try { MPSUser bsu = MPSUser.FindUserbyPhone(userphone); if (bsu == null) { Logger.Log($"Cannot update task {ttid} by testing system. User was not found by phone number: {userphone}"); return; } Defect d = new Defect(ttid); d.SetUpdater(bsu); string lockguid = Guid.NewGuid().ToString(); var lt = Defect.Locktask(ttid.ToString(), lockguid, bsu.ID.ToString()); bool locked = lt.globallock != lockguid; bool testFail; bool testcancel = false; if (!bool.TryParse(failed, out testFail)) { testcancel = true; } if (locked) { MPSUser lu = new MPSUser(lt.lockedby); TasksBot.SendMessage(lu.CHATID, $"You was disconnected from the task by the testing system to update task status!{Settings.CurrentSettings.GetTTAnchor(int.Parse(ttid), "disconnect.png")}"); NotifyHub.lockTaskForceUpdatePages(int.Parse(ttid), lockguid, bsu.ID); lt = Defect.Locktask(ttid.ToString(), lockguid, bsu.ID.ToString()); } List <DefectDispo> disp = (testcancel || testFail) ? DefectDispo.EnumTestsFailed() : DefectDispo.EnumTestsPassed(); if (disp.Count > 0) { if (!testcancel) { d.DISPO = disp[0].ID.ToString(); } else { d.AddMessage("Test request have been ignored", bsu.ID); } d.Store(); Defect.UnLocktask(ttid, lt.globallock); if (!testcancel) { DefectUser du = new DefectUser(d.AUSER); if (du.TRID > -1) { MPSUser worker = new MPSUser(du.TRID); string result = "Succeeded!"; string img = "taskokay.png"; if (testcancel) { result = "Cancelled!"; img = "bin.png"; } else if (testFail) { result = "Failed!"; img = "taskfail.png"; } TasksBot.SendMessage(worker.CHATID, $"The task tests have been marked as BST {result} by {bsu.PERSON_NAME}{Settings.CurrentSettings.GetTTAnchor(int.Parse(ttid), img)}"); } } } } catch (Exception e) { Logger.Log(e); } }