프로젝트

일반

사용자정보

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

markus / MarkusLogview / MARKUS_LOGVIEW / Controllers / MergeAPIController.cs @ c854511f

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

1 84578b97 djkim
using IKCOM;
2
using MARKUS_LOGVIEW.Common;
3
using MarkusDataModel.Common;
4
using MarkusDataModel.DataModel;
5
using MarkusDataModel.DTOs;
6
using System;
7
using System.Collections.Generic;
8
using System.Linq;
9
using System.Net;
10
using System.Net.Http;
11
using System.Net.Http.Headers;
12
using System.Threading.Tasks;
13
using System.Web.Http;
14
15
namespace MARKUS_LOGVIEW.Controllers
16
{
17
    
18
    public class MergeAPIController : ApiController
19
    {
20
21
        /// <summary>
22
        /// 파이널 도큐먼트 반환 
23
        /// </summary>
24
        /// <param name="filter"></param>
25
        /// <returns></returns>
26
        [HttpPost, Route("~/api/GetMergeDocument")]
27
        public async Task<MergeTableData> GetMergeDocumentList([FromBody] DataTableParameters filter )
28
        {
29
            #region 파이널 도큐먼트 리스트 반환 
30
31
            MergeTableData dto = new MergeTableData();
32
            List<TableData_Merge> tableData = new List<TableData_Merge>();
33
34
            if (!AuthorizationController.UserAuthorization(Request.Headers.Authorization.ToString()))
35
            {
36
                dto.statusCode = 403;
37
                return dto;
38
            }
39
            else
40
            {
41
42
                try
43
                {
44
45
                    if (!AuthorizationController.UserAuthorization(Request.Headers.Authorization.ToString()))
46
                    {
47
                        return dto;
48
                    }
49
                    else
50
                    {
51
52
                        DateTime prjDocStartDate = Convert.ToDateTime(filter.startDate);
53
                        DateTime prjDocEndDate = Convert.ToDateTime(filter.endDate).AddHours(23).AddMinutes(59).AddSeconds(59);
54
                        string token = Request.Headers.Authorization.ToString();
55
56
                        using (markusEntities entity = new markusEntities(ConnectStringBuilder.MarkusEntitiesConnectionString().ToString()))
57
                        {
58
59
                            var mergeDocList = entity.FINAL_PDF
60
                               .Where(
61
                            cd => cd.CREATE_DATETIME >= prjDocStartDate &&
62
                            cd.CREATE_DATETIME <= prjDocEndDate &&
63
                            cd.PROJECT_NO == filter.projectNo &&
64
                            (string.IsNullOrEmpty(filter.Search.Value)) ? string.IsNullOrEmpty(filter.Search.Value) : cd.DOCUMENT_ID.Contains(filter.Search.Value))
65
                               .OrderByDescending(t => t.CREATE_DATETIME)
66
                               .ToList();
67
68
69
                            if (mergeDocList.Count > 0)
70
                            {
71
72
                                List<DOCUMENT_ITEM> docItems = new List<DOCUMENT_ITEM>();
73
                                List<MEMBER> members = new List<MEMBER>();
74
                                docItems = entity.DOCUMENT_ITEM.Where(di => di.PROJECT_NO == filter.projectNo).ToList();
75
                                members = entity.MEMBER.ToList();
76
77
                                int count = mergeDocList.Count;
78
                                int index = filter.start;
79
80
                                var limitList = mergeDocList.Skip(filter.start).Take(filter.Length).ToList();
81
82
                                limitList.ForEach(ret =>
83
                                {
84
85
                                    var mergeUrl = docItems.Where(di => di.DOCUMENT_ID == ret.DOCUMENT_ID && di.PROJECT_NO == ret.PROJECT_NO).FirstOrDefault();
86
                                    string mergeFileURL = String.Empty;
87
88
                                    if (mergeUrl != null)
89
                                    {
90
                                        mergeFileURL = "<a href=\"" + mergeUrl.RESULT_FILE + "\" target=\"_blank\">PDF</a>";
91
                                    }
92
93
                                    tableData.Add(new TableData_Merge()
94
                                    {
95
                                        ID = ret.ID,
96
                                        DeleteDocument = "<input type=\"checkbox\" name=\"deleteDocument[]\" value=\"" + ret.DOCUMENT_ID + "\" />",
97
                                        OpenMarkusURL = "<a href=\"kcom://" + CommonController.CreateMarkusParam(ret.PROJECT_NO, ret.DOCUMENT_ID, token) + "\">open</a>",
98
                                        CreateUserID = (members.Where(mem => mem.ID.ToLower() == ret.CREATE_USER_ID.ToLower()).FirstOrDefault() != null) ? members.Where(mem => mem.ID.ToLower() == ret.CREATE_USER_ID.ToLower()).FirstOrDefault().NAME : null,
99
                                        DocumentID = ret.DOCUMENT_ID,
100
                                        CurrentPage = ret.CURRENT_PAGE,
101
                                        TotalPage = ret.TOTAL_PAGE,
102
                                        CreateDate = ret.CREATE_DATETIME,
103
                                        StartDateTime = ret.START_DATETIME,
104
                                        EndDateTime = ret.END_DATETIME,
105
                                        ConvertTime = null,
106
                                        Status = CommonController.GetStatusName(ret.STATUS),
107
                                        DocumentURL = mergeFileURL,
108
                                        Message = ret.EXCEPTION
109
                                    });
110
111
                                });
112
113
                                dto.draw = filter.Draw;
114
                                dto.recordsFiltered = count;
115
                                dto.recordsTotal = count;
116
                                dto.length = filter.Length;
117
                                dto.data = tableData;
118
119
                                return dto;
120
121
                            }
122
                            else
123
                            {
124
                                dto.draw = filter.Draw;
125
                                dto.recordsFiltered = 0;
126
                                dto.recordsTotal = 0;
127
                                dto.length = 0;
128
                                dto.data = new List<TableData_Merge>();
129
130
                                return dto;
131
                            }
132
133
134
                        }
135
                    }
136
137
                }
138
                catch (Exception)
139
                {
140
                    dto.statusCode = 500;
141
                    return dto;
142
                    throw;
143
                }
144
145
            }
146
147
            #endregion
148
        }
149
150
        /// <summary>
151
        /// Update Complete Convert Documnet URL, ViewInfo 
152
        /// </summary>
153
        /// <param name="pComplete"></param>
154
        /// <returns></returns>
155
        [HttpPost, Route("~/api/merge/complete")]
156
        public async Task<HttpResponseMessage> Complete(FINAL_PDF pComplete)
157
        {
158
            #region 컨버팅이 완료되면 ConvertURL , ViewInfo 데이터 생성
159
            HttpResponseMessage resp = new HttpResponseMessage();
160
            CompleteMergeDTO completeInfo = new CompleteMergeDTO();
161
162
            try
163
            {
164
                if (!AuthorizationController.UserAuthorization(Request.Headers.Authorization.ToString()))
165
                {
166
                    return CommonController.Forbidden(resp);
167
                }
168
                else
169
                {
170
171
                    using (markusEntities entity = new markusEntities(ConnectStringBuilder.MarkusEntitiesConnectionString().ToString()))
172
                    {
173
174
                        var mergeDocument = entity.FINAL_PDF.Where(doc => doc.PROJECT_NO == pComplete.PROJECT_NO && doc.ID == pComplete.ID).FirstOrDefault();
175
176
                        if (mergeDocument != null)
177
                        {
178
179
                            completeInfo = new CompleteMergeDTO()
180
                            {
181
                                ID = mergeDocument.ID,
182
                                MergeURL = (entity.DOCUMENT_ITEM.Where(di => di.DOCUMENT_ID == pComplete.DOCUMENT_ID && di.PROJECT_NO == pComplete.PROJECT_NO).FirstOrDefault() != null) ? entity.DOCUMENT_ITEM.Where(di => di.DOCUMENT_ID == pComplete.DOCUMENT_ID && di.PROJECT_NO == pComplete.PROJECT_NO).FirstOrDefault().RESULT_FILE : null,
183
                                ViewInfo = CommonController.CreateMarkusParam(mergeDocument.PROJECT_NO, mergeDocument.DOCUMENT_ID, Request.Headers.Authorization.ToString())
184
                            };
185
186
                            resp = await CommonController.OK<CompleteMergeDTO>(resp, completeInfo);
187
188
                        }
189
                        else
190
                        {
191
                            resp = await CommonController.NotFound<CompleteMergeDTO>(resp, completeInfo);
192
                        }
193
                    }
194
                }
195
196
                return resp;
197
198
            }
199
            catch (Exception)
200
            {
201
                resp = CommonController.InternalServerError(resp, "Error ");
202
                return resp;
203
            }
204
            #endregion
205
        }
206
207
        [HttpPost, Route("~/api/merge/GetDocumentMessage")]
208
        public async Task<HttpResponseMessage> GetDocumentItemMessage([FromBody] pDocumentMessage pDocInfo)
209
        {
210
            #region 도큐먼트 Message, Original URL 가져오기 
211
            HttpResponseMessage resp = new HttpResponseMessage();
212
213
            if (!AuthorizationController.UserAuthorization(Request.Headers.Authorization.ToString()))
214
            {
215
                return CommonController.Forbidden(resp);
216
            }
217
            else
218
            {
219
                try
220
                {
221
222
                    ViewInfo getDocument = CommonController.ParamDecoding(pDocInfo.pDocumentInfo);
223
224
                    using (markusEntities cme = new markusEntities(ConnectStringBuilder.MarkusEntitiesConnectionString().ToString()))
225
                    {
226
227
                        var finalMessage = cme.FINAL_PDF.Where(cd => cd.DOCUMENT_ID == pDocInfo.pDocumentInfo).Select(ret => ret.EXCEPTION).FirstOrDefault();
228
229
                        return await CommonController.OK<string>(resp, finalMessage);
230
231
                    }
232
233
                }
234
                catch (Exception ex)
235
                {
236
237
                    Console.WriteLine(ex.Message);
238
                    throw ex;
239
240
                }
241
            }
242
            #endregion
243
        }
244
245
246
        // 기능 없음 
247
        //[HttpPost, Route("~/api/remerge")]
248
        //public async Task<HttpResponseMessage> RetryMerge([FromBody] pRetryDocument) {
249
        //    HttpResponseMessage resp = new HttpResponseMessage();
250
        //    try
251
        //    {
252
        //        using (cloud)
253
        //        {
254
        //        }
255
        //    }
256
        //    catch (Exception)
257
        //    {
258
        //        throw;
259
        //    }
260
        //}
261
262
    }
263
}
클립보드 이미지 추가 (최대 크기: 500 MB)