Пример #1
0
        private void toolStripButton_addClient_Click(object sender, EventArgs e)
        {
            var clientProfile = new ClientProfile {
                IsEdit = false
            };
            var cpiNew = new ClientProfileInfo {
                Id = Guid.NewGuid().ToString()
            };



            clientProfile.ClientProfileInfo = cpiNew;

            clientProfile.ShowDialog();

            if (clientProfile.Saved)
            {
                var foundName = (from TreeNode treeNode in treeView_clients.Nodes
                                 select(ClientProfileInfo) treeNode.Tag).Any(clientProfileInfo =>
                                                                             string.Compare(clientProfileInfo.ClientName, clientProfile.ClientProfileInfo.ClientName, StringComparison.OrdinalIgnoreCase) == 0 &&
                                                                             clientProfileInfo.Id != clientProfile.ClientProfileInfo.Id);
                if (foundName)
                {
                    MessageBox.Show(this, @"Unable to save the company profile; name already exists!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                    foreach (var activityType in settings.ActivitiesTypes)
                    {
                        var clientActivityType = new ClientActivityType
                        {
                            Id                   = Guid.NewGuid().ToString(),
                            IdActivity           = activityType.Id,
                            Activated            = true,
                            HourlyRateClient     = activityType.HourlyRate,
                            HourlyRateAdjustment = 0
                        };



                        clientProfile.ClientProfileInfo.ClientActivities.Add(clientActivityType);
                    }


                    settings.Clients.Add(clientProfile.ClientProfileInfo);


                    AddCompanyToList(clientProfile.ClientProfileInfo);
                }
            }
            label_clientCount.Text = @"Clients: " + treeView_clients.Nodes.Count;
        }
Пример #2
0
        ////////////////////////////////////////////////////   서버와의 통신   ////////////////////////////////////////////////////
        private void GetRequest()       //서버로부터 받은 요청을 처리하는 쓰레드 메소드
        {
            while (true)
            {
                stream = clientSocket.GetStream();  //스트림 읽음
                int bytes = stream.Read(this.readbuffer, 0, this.readbuffer.Length);

                Packet packet = (Packet)Packet.Deserialize(this.readbuffer);

                switch ((int)packet.Type)
                {
                case (int)PacketType.메세지:
                {
                    ClientMessage clientMessage = new ClientMessage();
                    clientMessage = (ClientMessage)Packet.Deserialize(this.readbuffer);
                    DisplayText(clientMessage.Message, Color.Black);           //텍스트창에 띄움
                    break;
                }

                case (int)PacketType.그림정보:
                {
                    ClientDrawingInfo drawInfo = new ClientDrawingInfo();
                    drawInfo = (ClientDrawingInfo)Packet.Deserialize(this.readbuffer);
                    //로컬에서 테스트할때 이름 안 겹치게하려고..

                    fileStrm = new FileStream(filepath + "turnPic_" + client_number + ".jpg", FileMode.Create, FileAccess.Write);

                    break;
                }

                case (int)PacketType.그림:
                {
                    ClientDrawing draw = new ClientDrawing();
                    draw = (ClientDrawing)Packet.Deserialize(this.readbuffer);
                    string fileName = null;
                    //클라이언트로부터 받은 파일을 쓴다.
                    if (fileStrm != null)
                    {
                        fileStrm.Write(draw.buffer, 0, draw.buffer.Length);
                        countRead++;
                        if (countRead == draw.count)
                        {
                            fileName = fileStrm.Name;
                            fileStrm.Close();
                            fileStrm  = null;
                            countRead = 0;
                            //picture박스에 그림표시해야함.
                            FileStream fs = new FileStream(filepath + "turnPic_" + client_number + ".jpg", FileMode.Open, FileAccess.Read);
                            gamePicture.Image = System.Drawing.Image.FromStream(fs);
                            fs.Close();
                        }
                    }
                    break;
                }

                case (int)PacketType.프로필정보:
                {
                    ClientProfileInfo profileInfo = new ClientProfileInfo();
                    profileInfo = (ClientProfileInfo)Packet.Deserialize(this.readbuffer);
                    fileStrm    = new FileStream(filepath + client_number.ToString() + "-" + profileInfo.clientNum.ToString() + ".jpg", FileMode.Create, FileAccess.Write);
                    break;
                }

                case (int)PacketType.게임상태:
                {
                    GameState statePacket = new GameState();
                    statePacket = (GameState)Packet.Deserialize(this.readbuffer);
                    DisplayText(statePacket.message, Color.Red);
                    gameStart = statePacket.gameStart;
                    if (!gameStart)
                    {
                        settingTurnChange(-1);
                        System.Threading.Thread.Sleep(2000);
                        Next_Form();
                    }
                    break;
                }

                case (int)PacketType.턴:
                {
                    TurnChange turnPacket = new TurnChange();
                    turnPacket.turnCount = turnCount;
                    turnPacket           = (TurnChange)Packet.Deserialize(this.readbuffer);
                    turnReceived(turnPacket.turn, turnPacket.Word, turnPacket.message, turnPacket.clientscore);
                    break;
                }

                case (int)PacketType.프로필:
                {
                    ClientProfile profile = new ClientProfile();
                    profile = (ClientProfile)Packet.Deserialize(this.readbuffer);
                    string fileName = null;
                    //클라이언트로부터 받은 파일을 쓴다.
                    if (fileStrm != null)
                    {
                        fileStrm.Write(profile.buffer, 0, profile.buffer.Length);
                        countRead++;
                        if (countRead == profile.count)
                        {
                            fileName = fileStrm.Name;
                            fileStrm.Close();
                            fileStrm  = null;
                            countRead = 0;
                            if (profile.clientNum > client_number)
                            {
                                switch (profile.clientNum)
                                {
                                case 1: this.Invoke(new MethodInvoker(delegate() { nickNameList.Add(profile.nickName); })); break;

                                case 2: this.Invoke(new MethodInvoker(delegate() { nickNameList.Add(profile.nickName); })); break;

                                case 3: this.Invoke(new MethodInvoker(delegate() { nickNameList.Add(profile.nickName); })); break;
                                }
                            }
                            setProfile(profile.clientNum);
                        }
                    }
                    break;
                }

                case (int)PacketType.초기화:
                {
                    Init init = new Init();
                    init          = (Init)Packet.Deserialize(this.readbuffer);
                    client_number = init.clinetNumber;           //자신의 클라이언트 넘버 초기화
                    break;
                }

                case (int)PacketType.닉네임:       //6.13 초기화랑 닉네임 바꿈 -> initReceive함수 옮김
                {
                    NickName nick_name = new NickName();
                    nick_name = (NickName)Packet.Deserialize(this.readbuffer);
                    initReceived(nick_name.nickNameList, nick_name.client_sum);
                    break;
                }
                }
            }
        }
Пример #3
0
        private void AddCompanyToList(ClientProfileInfo clientProfileInfo)
        {
            var treeNode = treeView_clients.Nodes.Add(clientProfileInfo.ClientName);

            treeNode.Tag = clientProfileInfo;
        }
Пример #4
0
        public void SendProfileAll(string nickName, int cli_num)
        {
            //모든 클라이언트 리스트를 탐색
            string fileName = null;

            foreach (var pair in clientList)
            {
                TcpClient         client        = pair.Key as TcpClient;
                ClientProfile     clientProfile = new ClientProfile();
                ClientProfileInfo profileInfo   = new ClientProfileInfo();

                profileInfo.Type   = (int)PacketType.프로필정보;
                clientProfile.Type = (int)PacketType.프로필;

                NetworkStream stream = client.GetStream();  //스트림에서 얻고

                //클라이언트가 새로 들어오면, 모든 클라이언트들에게 새 이미지를 보낸다.
                profileInfo.clientNum = cli_num;
                fileName = Environment.CurrentDirectory + "\\Server\\bin\\Debug\\" + cli_num.ToString() + ".jpg";
                Packet.Serialize(profileInfo).CopyTo(this.sendbuffer, 0);
                stream.Write(this.sendbuffer, 0, this.sendbuffer.Length);
                stream.Flush();

                resetBuffer(sendbuffer);

                FileInfo     file     = new FileInfo(fileName);
                FileStream   fileStrm = new FileStream(file.FullName, FileMode.Open, FileAccess.Read);
                BinaryReader reader   = new BinaryReader(fileStrm);
                int          count    = (int)(file.Length) / (1024) + 1;

                for (int j = 0; j < count; j++)
                {
                    clientProfile.buffer    = reader.ReadBytes(1024);
                    clientProfile.count     = count;
                    clientProfile.nickName  = nickName;
                    clientProfile.Type      = (int)PacketType.프로필;
                    clientProfile.clientNum = cli_num;

                    Packet.Serialize(clientProfile).CopyTo(this.sendbuffer, 0);
                    stream.Write(this.sendbuffer, 0, this.sendbuffer.Length);
                    stream.Flush();

                    resetBuffer(sendbuffer);
                }
                fileStrm.Close();
                //새로 들어온 애는 기존 녀석들까지 보내줘야 한다.
                if (clientNum[client] == cli_num)
                {
                    for (int i = 0; i < cli_num; i++)
                    {
                        profileInfo.clientNum = i;
                        fileName = Environment.CurrentDirectory + "\\Server\\bin\\Debug\\" + i.ToString() + ".jpg";
                        Packet.Serialize(profileInfo).CopyTo(this.sendbuffer, 0);
                        stream.Write(this.sendbuffer, 0, this.sendbuffer.Length);
                        stream.Flush();

                        for (int j = 0; j < 1024 * 4; j++)
                        {
                            sendbuffer[j] = 0;
                        }

                        file     = new FileInfo(fileName);
                        fileStrm = new FileStream(file.FullName, FileMode.Open, FileAccess.Read);
                        reader   = new BinaryReader(fileStrm);
                        count    = (int)(file.Length) / (1024) + 1;

                        for (int j = 0; j < count; j++)
                        {
                            clientProfile.buffer    = reader.ReadBytes(1024);
                            clientProfile.count     = count;
                            clientProfile.nickName  = nickName;
                            clientProfile.Type      = (int)PacketType.프로필;
                            clientProfile.clientNum = i;

                            Packet.Serialize(clientProfile).CopyTo(this.sendbuffer, 0);
                            stream.Write(this.sendbuffer, 0, this.sendbuffer.Length);
                            stream.Flush();

                            resetBuffer(sendbuffer);
                        }
                        fileStrm.Close();
                    }
                }
            }
        }
Пример #5
0
        private void TrackProjectActivity_Load(object sender, EventArgs e)
        {
            IsLoading = true;

            if (IsMerge)
            {
                Text += @" (Merge)";
            }
            else
            {
                Text += IsEdit ? " (Edit)" : " (New)";
            }

            #region  |  get company profile  |
            foreach (var clientProfileInfo in Tracked.Preferences.Clients)
            {
                if (clientProfileInfo.Id != Project.ClientId)
                {
                    continue;
                }

                Client = clientProfileInfo;
                break;
            }
            #endregion


            textBox_client.Text = Client != null ? Client.ClientName : "[no client]";


            initialize_projects_combobox();

            #region  |  set project  |


            var selectedProjectIndex = 0;
            for (var i = 0; i < comboBox_projects.Items.Count; i++)
            {
                var comboboxItem = (ComboboxItem)comboBox_projects.Items[i];

                if (comboboxItem.Value == null)
                {
                    continue;
                }

                var trackerProject = (TrackerProject)comboboxItem.Value;

                if (trackerProject.Id != Project.Id)
                {
                    continue;
                }

                selectedProjectIndex = i;
                break;
            }

            comboBox_projects.SelectedIndex = selectedProjectIndex;
            #endregion


            initialize_activity_types_combobox();

            #region  |  set activity type  |

            var selectedTypeIndex = 0;
            for (var i = 0; i < comboBox_activity_type.Items.Count; i++)
            {
                var comboboxItem = (ComboboxItem)comboBox_activity_type.Items[i];

                if (comboboxItem.Value == null)
                {
                    continue;
                }

                var objs = (object[])comboboxItem.Value;

                Structures.ActivityType activityType = null;
                if (objs[0] != null)
                {
                    activityType = (Structures.ActivityType)objs[0];
                }
                ClientActivityType clientActivityType = null;
                if (objs[1] != null)
                {
                    clientActivityType = (ClientActivityType)objs[1];
                }


                if (Client != null)
                {
                    if (clientActivityType == null)
                    {
                        continue;
                    }

                    if (clientActivityType.Id != Activity.ActivityTypeClientId)
                    {
                        continue;
                    }

                    selectedTypeIndex = i;
                    break;
                }
                if (activityType != null && activityType.Id != Activity.ActivityTypeId)
                {
                    continue;
                }

                selectedTypeIndex = i;
                break;
            }
            comboBox_activity_type.SelectedIndex = selectedTypeIndex;
            #endregion


            textBox_name.Text        = Activity.Name;
            textBox_description.Text = Activity.Description;


            #region  |  dates/times  |
            if (!IsEdit)
            {
                dateTimePicker_start_date.Value  = DateTime.Now;
                dateTimePicker_start_hours.Value = DateTime.Now;

                dateTimePicker_end_date.Value  = DateTime.Now;
                dateTimePicker_end_hours.Value = DateTime.Now;
            }
            else
            {
                dateTimePicker_start_date.Value  = Activity.DateStart;
                dateTimePicker_start_hours.Value = Activity.DateStart;

                dateTimePicker_end_date.Value  = Activity.DateEnd;
                dateTimePicker_end_hours.Value = Activity.DateEnd;
            }
            #endregion


            comboBox_status.SelectedItem = Activity.Status;

            checkBox_invoiced.Checked          = Activity.Invoiced;
            dateTimePicker_date_invoiced.Value = Activity.InvoicedDate != Common.DateNull ? Activity.InvoicedDate : DateTime.Now;

            checkBox_billable.Checked = Activity.Billable;

            numericUpDown_hourly_rate_client.Value = Activity.HourlyRate;
            numericUpDown_quantity.Value           = Activity.Quantity;

            label_total.Text = Math.Round(numericUpDown_quantity.Value * numericUpDown_hourly_rate_client.Value, 2).ToString(CultureInfo.InvariantCulture);


            textBox_name.Select();

            checkBox_invoiced_CheckedChanged(null, null);


            CheckActivatedControls();

            IsLoading = false;
            CheckAdjustment();
        }