Exemple #1
0
 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")}");
     }
 }
Exemple #2
0
 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("<", "&#60;").Replace(">", "&#62;")}{Settings.CurrentSettings.GetTTAnchor(int.Parse(ttid), img)}";
             TasksBot.SendMessage(worker.CHATID, mess2send);
             if (alsoteam)
             {
                 TestChannel.SendMessage(mess2send);
             }
         }
     }
     catch (Exception e)
     {
         Logger.Log(e);
     }
 }
Exemple #3
0
    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}");
    }
Exemple #4
0
    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)}");
    }
Exemple #5
0
    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);
    }
Exemple #6
0
    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();
    }
Exemple #7
0
    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);
    }
Exemple #8
0
    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);
    }
Exemple #9
0
 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");
 }
Exemple #10
0
    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");
    }
Exemple #11
0
    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);
    }
Exemple #12
0
    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");
    }
Exemple #13
0
    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/>"));
    }
Exemple #14
0
    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()}");
    }
Exemple #15
0
    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);
        }
    }
Exemple #16
0
 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;
     }
 }
Exemple #17
0
 public MPSUser newUser()
 {
     CurrentContext.ValidateAdmin();
     return(MPSUser.NewUser());
 }
Exemple #18
0
 public void SetUpdater(MPSUser u)
 {
     _updater = u;
 }
Exemple #19
0
 static void ThreadLogin(MPSUser u)
 {
     _threadContext[Thread.CurrentThread.ManagedThreadId] = u;
 }
Exemple #20
0
    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...");
    }
Exemple #21
0
 public List <MPSUser> getMPSUsers(bool active)
 {
     return(MPSUser.EnumAllUsers(active));
 }
Exemple #22
0
    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);
        }
    }