프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / KCOM_API / MarkusService.svc.cs @ fdfa126d

이력 | 보기 | 이력해설 | 다운로드 (12 KB)

1
using KCOMDataModel.DataModel;
2
using log4net;
3
using Newtonsoft.Json.Linq;
4
using System;
5
using System.Collections.Generic;
6
using System.Configuration;
7
using System.Linq;
8
using System.Runtime.Serialization;
9
using System.ServiceModel;
10
using System.ServiceModel.Activation;
11
using System.ServiceModel.Web;
12
using System.Text;
13

    
14
namespace KCOM_API
15
{
16
    [ServiceContract(Namespace = "")]
17
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
18
    public class MarkusService : System.Web.Services.WebService
19
    {
20
        protected ILog logger = LogManager.GetLogger(typeof(MarkusService));
21

    
22
        [WebGet(UriTemplate = "AddMember?UserId={UserId}&Name={Name}&Company={Company}&Department={Department}&Position={Position}&email={email}", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
23
        [OperationContract]
24
        public AddMemberResults AddMember(string UserId,string Name, string Company, string Department,string Position,string email)
25
        {
26
            AddMemberResults results = new AddMemberResults(false,null);
27

    
28
            try
29
            {
30
                string sCIConnString = ConfigurationManager.ConnectionStrings["CIConnectionString"].ConnectionString;
31
                using (CIEntities _ci = new CIEntities(sCIConnString))
32
                {
33
                    if (_ci.MEMBER.Count(x => x.ID == UserId) == 0)
34
                    {
35
                        _ci.AddToMEMBER(new MEMBER
36
                        {
37
                            ID = UserId,
38
                            NAME = Name,
39
                            COMPANY = Company,
40
                            DEPARTMENT = Department,
41
                            POSITION = Position,
42
                            EMAIL_ADDRESS = email,
43
                            MODIFIED_DATETIME = DateTime.Now,
44
                            CREATE_DATETIME = DateTime.Now
45
                        });
46

    
47
                        _ci.SaveChanges();
48

    
49
                        results.IsSuccess = true;
50
                    }
51
                    else
52
                    {
53
                        results.Message = "User already exists.";
54
                    }
55
                }
56
            }
57
            catch (Exception ex)
58
            {
59
                results.Message = "system Error";
60
            }
61
            finally
62
            {
63

    
64
            }
65

    
66
            return results;
67
        }
68

    
69
        [WebInvoke(UriTemplate = "GetMembers",Method ="POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
70
        [OperationContract]
71
        public GetMembersResults GetMembers()
72
        {
73
            GetMembersResults results = new GetMembersResults();
74

    
75
            try
76
            {
77
                string sCIConnString = ConfigurationManager.ConnectionStrings["CIConnectionString"].ConnectionString;
78
                using (CIEntities _ci = new CIEntities(sCIConnString))
79
                {
80
                    if (_ci.MEMBER.Count() > 0)
81
                    {
82
                        results.Members = _ci.MEMBER.Select(m => new Member
83
                        {
84
                            ID = m.ID,
85
                            NAME = m.NAME,
86
                            COMPANY = m.COMPANY,
87
                            DEPARTMENT = m.DEPARTMENT,
88
                            POSITION = m.POSITION,
89
                            EMAIL_ADDRESS = m.EMAIL_ADDRESS
90
                        }).ToArray();
91
                    }
92
                }
93
            }
94
            catch (Exception ex)
95
            {
96
            }
97
            finally
98
            {
99

    
100
            }
101

    
102
            return results;
103
        }
104

    
105
        [WebGet(UriTemplate = "ConvertRun?rev_No={rev_No}&document_No={document_No}&document_Name={document_Name}&group_No={group_No}&prj_No={prj_No}&document_Id={document_Id}&document_Url={document_Url}", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
106
        [OperationContract]
107
        public string ConvertRun(string rev_No, string document_No, string document_Name, string group_No, string prj_No, string document_Id, string document_Url)
108
        {
109
            string _result = null;
110
            try
111
            {
112
                logger.Info($"Conversion Web Service ConvertRun call rev_No :{rev_No} document_No : {document_No}  document_Name : {document_Name}  group_No : {group_No}  prj_No : {prj_No}  document_Id : {document_Id}  document_Url : {document_Url}");
113
                
114
                string sConnString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
115
                using (KCOMEntities deepViewEntity = new KCOMEntities(sConnString))
116
                {
117
                    //_result = ConnectStringBuilder.DeepViewConnectionString().ToString();
118
                    //var _RunProjects = deepViewEntity.RUN_PROJECTS.Where(r => r.PROJECT_NO == projNumber && DateTime.Parse(r.RUN_DATETIME)<= DateTime.Now);
119
                    //var _RunProjects = deepViewEntity.RUN_PROJECTS.Where(r => r.PROJECT_NO == projNumber);
120
                    var _RunProjects = deepViewEntity.RUN_PROJECTS.Where(r => r.PROJECT_NO == prj_No).ToList();
121

    
122
                    if (_RunProjects.Count() == 0)
123
                    {
124
                        deepViewEntity.RUN_PROJECTS.AddObject(new RUN_PROJECTS { PROJECT_NO = prj_No, IS_ACTIVITY = 1, PROJECT_NAME = "", RUN_DATETIME = DateTime.Today });
125

    
126
                        var items = deepViewEntity.PROPERTIES.Where(x => x.PROPERTY == "SAMPLEPRJ");
127

    
128
                        foreach (var item in items)
129
                        {
130
                            deepViewEntity.PROPERTIES.AddObject(new PROPERTIES { TYPE = item.TYPE, PROPERTY = prj_No, VALUE = item.VALUE });
131
                        }
132

    
133
                        deepViewEntity.SaveChanges();
134
                    }
135
                }
136

    
137
                _result = SendKcom(rev_No, document_No, document_Name, group_No, prj_No, document_Id, document_Url);
138
            }
139
            catch (Exception ex)
140
            {
141
                logger.Error($"Conversion Web Service ConvertRun Error rev_No :{rev_No} document_No : {document_No}  document_Name : {document_Name}  group_No : {group_No}  prj_No : {prj_No}  document_Id : {document_Id}  document_Url : {document_Url}", ex);
142
                _result = "Error";
143
            }
144
            return _result;
145
        }
146

    
147

    
148
        private string SendKcom(string rev_No, string document_No, string document_Name, string group_No, string prj_No, string document_Id, string document_Url)
149
        {
150
            string result = false.ToString();
151

    
152
            //string _id = GetGuid(0, GuidGenerator.GetUniqueGuid()).ToString();
153
            string _id = shortGuid();
154
            string _doc_id = document_Id;// ((UInt32)document_Id.GetHashCode()).ToString();
155

    
156
            string sCIConnString = ConfigurationManager.ConnectionStrings["CIConnectionString"].ConnectionString;
157
            using (CIEntities _kcomEntity = new CIEntities(sCIConnString))
158
            {
159
                if (string.IsNullOrEmpty(group_No))
160
                {
161
                    group_No = "0";
162
                }
163
                //if (!document_Url.ToLower().Contains("http%3a%2f%2f"))
164
                //{
165
                //    document_Url = Base64Decode(document_Url);
166
                //    document_Url = System.Net.WebUtility.UrlEncode(document_Url);
167
                //}
168
                //document_Name = Base64DecodeFromStr(document_Name);
169

    
170
                var doc = _kcomEntity.DOCUMENT_ITEM.Where(d => d.PROJECT_NO == prj_No && d.ID == document_Id).FirstOrDefault();
171
                if (doc != null)
172
                {
173
                    doc.DOCUMENT_ID = _doc_id;
174
                    doc.REVISION = rev_No;
175
                    doc.GROUP_NO = group_No;
176
                    doc.DOCUMENT_NO = document_No;
177
                    doc.DOCUMENT_NAME = document_Name;
178
                    doc.ORIGINAL_FILE = document_Url;
179
                }
180
                else
181
                {
182
                    _kcomEntity.AddToDOCUMENT_ITEM(new DOCUMENT_ITEM
183
                    {
184
                        ID = document_Id,
185
                        REVISION = rev_No,
186
                        DOCUMENT_NO = document_No,
187
                        DOCUMENT_NAME = document_Name,
188
                        GROUP_NO = group_No,
189
                        ORIGINAL_FILE = document_Url,
190
                        DOCUMENT_ID = _doc_id,
191
                        PROJECT_NO = prj_No,
192
                    });
193
                }
194

    
195
                _kcomEntity.SaveChanges();
196

    
197
            }
198

    
199
            string sConnString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
200
            using (KCOMEntities _entity = new KCOMEntities(sConnString))
201
            {
202
                _entity.AddToCONVERTER_DOC(new CONVERTER_DOC
203
                {
204
                    ID = _id,
205
                    CREATE_DATETIME = DateTime.Now,
206
                    DOCUMENT_URL = document_Url,
207
                    PROJECT_NO = prj_No,
208
                    DOCUMENT_ID = _doc_id,
209
                });
210

    
211
                _entity.SaveChanges();
212
            }
213

    
214
            try
215
            {
216
                System.Net.WebClient client = new System.Net.WebClient();
217
                var convertResult = client.DownloadString($"{Properties.Settings.Default.CovnertService}/Rest/ConvertAdd?ProjectNo={prj_No}&ConvertID={_id}");
218

    
219
                JObject jObject = JObject.Parse(convertResult, new JsonLoadSettings());
220
                result = jObject["ConvertAddResult"].ToString();
221
            }
222
            catch (Exception ex)
223
            {
224
                logger.Error("Conversion Web Service SendKcom Error", ex);
225
                result = $"Markus V3 Connect Error {ex.ToString()}";
226
            }
227

    
228

    
229
            return result;
230
        }
231

    
232
        public string Base64DecodeFromStr(string data)
233
        {
234
            try
235
            {
236
                System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
237
                System.Text.Decoder utf8Decode = encoder.GetDecoder();
238

    
239
                byte[] todecode_byte = Convert.FromBase64String(data);
240

    
241
                int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
242

    
243
                char[] decoded_char = new char[charCount];
244

    
245
                utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);
246

    
247
                string result = new String(decoded_char);
248

    
249
                return result;
250
            }
251
            catch (Exception)
252
            {
253
                return data;
254
            }
255
        }
256

    
257
        public string Base64Decode(string data)
258
        {
259
            try
260
            {
261
                if (data.Contains("http://"))
262
                {
263
                    return data;
264
                }
265
                else
266
                {
267
                    System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
268
                    System.Text.Decoder utf8Decode = encoder.GetDecoder();
269

    
270
                    byte[] todecode_byte = Convert.FromBase64String(data);
271

    
272
                    int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
273

    
274
                    char[] decoded_char = new char[charCount];
275

    
276
                    utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);
277

    
278
                    string result = new String(decoded_char);
279

    
280
                    return result;
281
                }
282

    
283

    
284
            }
285

    
286
            catch (Exception e)
287
            {
288
                throw new Exception("Error in Base64Decode: " + e.Message);
289
            }
290
        }
291
        public string shortGuid()
292
        {
293
            byte[] bytes = new byte[16];
294
            using (var provider = System.Security.Cryptography.RandomNumberGenerator.Create())
295
            {
296
                provider.GetBytes(bytes);
297
            }
298

    
299
            var guid = new Guid(bytes);
300

    
301
            return Convert.ToBase64String(guid.ToByteArray())
302
                .Substring(0, 10)
303
                .Replace("/", "")
304
                .Replace("+", "") + DateTime.UtcNow.Ticks.ToString("x");
305
        }
306

    
307
    }
308
}
클립보드 이미지 추가 (최대 크기: 500 MB)