Ejemplo n.º 1
0
        public override void Reflection(StringBuilder sb)
        {
            sb.AppendLine("<AcknowledgePdu>");
            base.Reflection(sb);
            try
            {
                sb.AppendLine("<acknowledgeFlag type=\"ushort\">" + AcknowledgeFlag.ToString(CultureInfo.InvariantCulture) + "</acknowledgeFlag>");
                sb.AppendLine("<responseFlag type=\"ushort\">" + ResponseFlag.ToString(CultureInfo.InvariantCulture) + "</responseFlag>");
                sb.AppendLine("<requestID type=\"uint\">" + RequestID.ToString(CultureInfo.InvariantCulture) + "</requestID>");
                sb.AppendLine("</AcknowledgePdu>");
            }
            catch (Exception e)
            {
                if (TraceExceptions)
                {
                    Trace.WriteLine(e);
                    Trace.Flush();
                }

                RaiseExceptionOccured(e);

                if (ThrowExceptions)
                {
                    throw;
                }
            }
        }
Ejemplo n.º 2
0
 internal void TryStaticFileCacheControl()
 {
     if ((Flag & ResponseFlag.CacheControl) == 0)
     {
         CacheControlData = StaticFileCacheControl;
         Flag            |= cacheControlFlag;
     }
 }
Ejemplo n.º 3
0
 public void SetResponseFlag(ResponseFlag flag)
 {
     if (flag == ResponseFlag.Request_or_Indication)
     {
         data[0] &= 0x7F;
     }
     else
     {
         data[0] |= 0x80;
     }
 }
Ejemplo n.º 4
0
 internal void AppendCookie(Cookie cookie)
 {
     if ((Flag & ResponseFlag.Cookie) == 0)
     {
         Flag |= ResponseFlag.Cookie;
     }
     else
     {
         cookie.LinkNext = Cookie;
     }
     Cookie = cookie;
 }
Ejemplo n.º 5
0
 internal void SetAccessControlAllowOrigin(BufferIndex index)
 {
     if (index.Length == 0)
     {
         Flag &= ResponseFlag.All ^ ResponseFlag.AccessControlAllowOrigin;
     }
     else
     {
         AccessControlAllowOrigin = index;
         Flag |= ResponseFlag.AccessControlAllowOrigin;
     }
 }
Ejemplo n.º 6
0
 internal void SetHeaderSize(int headerSize)
 {
     if (headerSize == 0)
     {
         Flag &= ResponseFlag.All ^ ResponseFlag.HeaderSize;
     }
     else
     {
         Flag      |= ResponseFlag.HeaderSize;
         HeaderSize = headerSize;
     }
 }
Ejemplo n.º 7
0
 public void SetLastModified(byte[] data)
 {
     if (data == null || data.Length == 0)
     {
         Flag &= ResponseFlag.All ^ ResponseFlag.LastModified;
     }
     else
     {
         LastModifiedData = data;
         Flag            |= lastModifiedFlag;
     }
 }
Ejemplo n.º 8
0
 internal void SetContentEncoding(byte[] data)
 {
     if (data == null || data.Length == 0)
     {
         Flag &= ResponseFlag.All ^ ResponseFlag.ContentEncoding;
     }
     else
     {
         ContentEncoding = data;
         Flag           |= ResponseFlag.ContentEncoding;
     }
 }
Ejemplo n.º 9
0
        /// <inheritdoc/>
        public override int GetHashCode()
        {
            int result = 0;

            result = GenerateHash(result) ^ base.GetHashCode();

            result = GenerateHash(result) ^ AcknowledgeFlag.GetHashCode();
            result = GenerateHash(result) ^ ResponseFlag.GetHashCode();
            result = GenerateHash(result) ^ RequestID.GetHashCode();

            return(result);
        }
Ejemplo n.º 10
0
        public IEnumerable <ResponseFlag> FinalUploadCropImage(UploadMandateModel context)
        {
            List <ResponseFlag> common = new List <ResponseFlag>();
            ResponseFlag        Flag   = new ResponseFlag();

            try
            {
                string croppedFileName = string.Empty;
                string filePath        = string.Empty;
                string ID          = Convert.ToString(Dbsecurity.Decrypt(context.MdtID));
                string No          = Convert.ToString(Dbsecurity.Decrypt(context.RefrenceNo));
                string APPId       = Convert.ToString(Dbsecurity.Decrypt(context.AppID));
                string UserId      = Convert.ToString(Dbsecurity.Decrypt(context.UserId));
                string JPGFilepath = string.Empty;
                croppedFileName = ConfigurationManager.AppSettings["DownloadFileName" + APPId].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".tif";
                filePath        = "../MandateFile/" + APPId + "/" + ID + "/" + croppedFileName;
                string MandateId = ID;

                if (File.Exists(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + MandateId + "/" + ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + Convert.ToString(No) + ".tif")) && File.Exists(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + MandateId + "/" + ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + Convert.ToString(No) + ".jpg")))
                {
                    croppedFileName = ConfigurationManager.AppSettings["DownloadFileName" + APPId].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg";
                    JPGFilepath     = "../MandateFile/" + APPId + "/" + ID + "/" + croppedFileName;
                    QuickCheck_AngularEntities dbcontext = new QuickCheck_AngularEntities();
                    List <GetLogo>             dataList1 = new List <GetLogo>();
                    var Result2 = dbcontext.MultipleResults("[dbo].[Sp_Mandate]").With <GetLogo>().Execute("@QueryType", "@TIPPath", "@PNGPath", "@MandateId", "@UserId", "UpdatePNGTIP",
                                                                                                           Convert.ToString(filePath), Convert.ToString(JPGFilepath), Convert.ToString(ID), Convert.ToString(UserId));
                    Flag.Flag      = "1";
                    Flag.FlagValue = "Mandate uploaded successfully";
                    common.Add(Flag);
                }
                else
                {
                    QuickCheck_AngularEntities dbcontext = new QuickCheck_AngularEntities();
                    List <GetLogo>             dataList1 = new List <GetLogo>();
                    var Result2 = dbcontext.MultipleResults("[dbo].[Sp_Mandate]").With <GetLogo>().Execute("@QueryType", "@TIPPath", "@PNGPath", "@MandateId", "@UserId", "UpdatePNGTIP",
                                                                                                           null, null, ID, UserId);
                    Flag.Flag      = "1";
                    Flag.FlagValue = "Image is not Properly Uploaded,Please Upload again";
                    common.Add(Flag);
                }
                // }
            }
            catch (Exception ex)
            {
                Flag.Flag      = "1";
                Flag.FlagValue = "Image is not Properly Uploaded,Please Upload again";
                common.Add(Flag);
            }


            return(common);
        }
Ejemplo n.º 11
0
 internal void SetLocation(byte[] data, ResponseState state = ResponseState.Found302)
 {
     if (data == null)
     {
         Location.Set(EmptyArray <byte> .Array, 0, 0);
     }
     else
     {
         Location.Set(data, 0, data.Length);
     }
     State = state;
     Flag  = (Flag | ResponseFlag.Location | ResponseFlag.State) & (ResponseFlag.All ^ ResponseFlag.AccessControlAllowOrigin);
 }
Ejemplo n.º 12
0
 /// <summary>
 /// 设置非缓存参数输出
 /// </summary>
 /// <param name="contentType"></param>
 internal void NoStore200(byte[] contentType)
 {
     if (ResponseState == Http.ResponseState.Ok200)
     {
         if (ContentTypeData == null)
         {
             ContentTypeData = contentType;
             Flag           |= contentTypeFlag;
         }
         if (((Flag & ResponseFlag.LastModified) == 0 || LastModifiedData == null) &&
             ((Flag & ResponseFlag.CacheControl) == 0 || CacheControlData == null) &&
             ((Flag & ResponseFlag.ETag) == 0 || ETagData == null))
         {
             CacheControlData = noStoreBytes;
             Flag            |= cacheControlFlag;
         }
     }
 }
Ejemplo n.º 13
0
 /// <summary>
 /// 设置重定向
 /// </summary>
 /// <param name="header"></param>
 /// <param name="path"></param>
 /// <param name="state"></param>
 internal unsafe void SetLocation(Header header, string path, ResponseState state = ResponseState.Found302)
 {
     if (path.Length == 0)
     {
         Location.Set(EmptyArray <byte> .Array, 0, 0);
     }
     else
     {
         header.SetResponseLocationRange(path, ref Location);
         fixed(char *pathFixed = path)
         fixed(byte *dataFixed = Location.GetFixedBuffer())
         {
             AutoCSer.Extensions.StringExtension.WriteBytes(pathFixed, path.Length, dataFixed + Location.Start);
         }
     }
     State = state;
     Flag  = (Flag | ResponseFlag.Location | ResponseFlag.State) & (ResponseFlag.All ^ ResponseFlag.AccessControlAllowOrigin);
 }
Ejemplo n.º 14
0
 /// <summary>
 /// 添加到 HTTP 响应池
 /// </summary>
 internal void Push()
 {
     if ((Flag & ResponseFlag.IsPool) != 0)
     {
         freeBody();
         Type = ResponseType.ByteArray;
         Flag = ResponseFlag.IsPool;
         if (YieldPool.Default.IsPush(this) != 0)
         {
             return;
         }
     }
     if (Type == ResponseType.SubBuffer)
     {
         Body.Array = EmptyArray <byte> .Array;
         SubBuffer.Free();
         Type = ResponseType.ByteArray;
     }
 }
Ejemplo n.º 15
0
        public IEnumerable <ResponseFlag> ViewCropImage(UploadMandateModel context)
        {
            List <ResponseFlag> common = new List <ResponseFlag>();
            ResponseFlag        Flag   = new ResponseFlag();
            string ID     = Convert.ToString(Dbsecurity.Decrypt(context.MdtID));
            string No     = Convert.ToString(Dbsecurity.Decrypt(context.RefrenceNo));
            string APPId  = Convert.ToString(Dbsecurity.Decrypt(context.AppID));
            string UserId = Convert.ToString(Dbsecurity.Decrypt(context.UserId));

            try
            {
                QuickCheck_AngularEntities dbcontext = new QuickCheck_AngularEntities();
                List <BindGrid>            dataList1 = new List <BindGrid>();
                var Result2 = dbcontext.MultipleResults("[dbo].[Sp_Mandate]").With <BindGrid>().Execute("@QueryType", "@MandateId", "@AppId", "EditMandate", ID, APPId);
                Flag.IsPrint = dataList1.Cast <BindGrid>().ToList().Select(x => x.IsPrint).First().ToString();
                Flag.IsScan  = dataList1.Cast <BindGrid>().ToList().Select(x => x.IsScan).First().ToString();
                Flag.Flag    = "1";
                common.Add(Flag);
            }
            catch (Exception ex) { throw ex; }
            return(common);
        }
Ejemplo n.º 16
0
 internal void SetLocation(ref SubArray <byte> data, ResponseState state = ResponseState.Found302)
 {
     Location = data;
     State    = state;
     Flag     = (Flag | ResponseFlag.Location | ResponseFlag.State) & (ResponseFlag.All ^ ResponseFlag.AccessControlAllowOrigin);
 }
Ejemplo n.º 17
0
 internal void CancelPool()
 {
     Flag &= ResponseFlag.All ^ ResponseFlag.IsPool;
 }
Ejemplo n.º 18
0
        /// <summary>
        /// 压缩数据
        /// </summary>
        /// <param name="isFastestCompressionLevel"></param>
        internal void Compress(bool isFastestCompressionLevel)
#endif
        {
            switch (Type)
            {
            case Net.Http.ResponseType.ByteArray:
                Body.SetFull();
                goto SUBBYTEARRAY;

            case Net.Http.ResponseType.SubByteArray:
SUBBYTEARRAY:
                if (Body.Length > GZipHeaderSize + 256)
                {
                    SubArray <byte> compressData = new SubArray <byte>();
                    try
                    {
#if DOTNET2 || DOTNET4
                        if (AutoCSer.IO.Compression.GzipCompressor.Get(Body.Array, Body.Start, Body.Length, ref SubBuffer, ref compressData, 0, GZipHeaderSize))
#else
                        if (AutoCSer.IO.Compression.GzipCompressor.Get(Body.Array, Body.Start, Body.Length, ref SubBuffer, ref compressData, 0, GZipHeaderSize, isFastestCompressionLevel))
#endif
                        {
                            Body            = compressData;
                            Type            = compressData.Array == SubBuffer.Buffer ? ResponseType.SubBuffer : ResponseType.SubByteArray;
                            ContentEncoding = GZipEncoding;
                            Flag           |= ResponseFlag.ContentEncoding;
                        }
                    }
                    finally
                    {
                        if (Type != ResponseType.SubBuffer)
                        {
                            SubBuffer.Free();
                        }
                    }
                }
                return;

            case Net.Http.ResponseType.SubBuffer:
                if (Body.Length > GZipHeaderSize + 256)
                {
                    SubBuffer.PoolBufferFull compressBuffer = default(SubBuffer.PoolBufferFull);
                    SubArray <byte>          compressData   = new SubArray <byte>();
                    byte isCompress = 0;
                    try
                    {
#if DOTNET2 || DOTNET4
                        if (AutoCSer.IO.Compression.GzipCompressor.Get(Body.Array, Body.Start, Body.Length, ref compressBuffer, ref compressData, 0, GZipHeaderSize))
#else
                        if (AutoCSer.IO.Compression.GzipCompressor.Get(Body.Array, Body.Start, Body.Length, ref compressBuffer, ref compressData, 0, GZipHeaderSize, isFastestCompressionLevel))
#endif
                        {
                            isCompress = 1;
                            SubBuffer.Free();
                            Body = compressData;
                            if (compressData.Array == compressBuffer.Buffer)
                            {
                                SubBuffer = compressBuffer;
                            }
                            else
                            {
                                Type = ResponseType.SubByteArray;
                            }
                            ContentEncoding = GZipEncoding;
                            Flag           |= ResponseFlag.ContentEncoding;
                        }
                    }
                    finally
                    {
                        if (isCompress == 0 || Type != ResponseType.SubBuffer)
                        {
                            compressBuffer.Free();
                        }
                    }
                }
                return;
            }
        }
Ejemplo n.º 19
0
 /// <summary>
 /// 设置 HTTP 响应状态
 /// </summary>
 /// <param name="state"></param>
 internal void SetState(ResponseState state)
 {
     State = state;
     Flag |= ResponseFlag.State;
 }
Ejemplo n.º 20
0
        /// <summary>
        /// HTTP 响应头部输出
        /// </summary>
        /// <param name="response"></param>
        /// <returns></returns>
        private bool responseHeader(ref Response response)
        {
            try
            {
                if (!response.IsFile)
                {
                    ResponseError(ResponseState.NotFound404);
                    return(true);
                }
                System.Net.Sockets.Socket socket;
                ResponseFlag responseFlag = response.Flag;
                if (response.Body.Length != 0 && Header.IsKeepAlive != 0 && (responseFlag & ResponseFlag.HeaderSize) != 0 && Header.IsRange == 0 && Header.Method != MethodType.HEAD)
                {
                    if ((socket = Socket) == null)
                    {
                        return(false);
                    }
                    Data = response.Body;
                    Data.MoveStart(-response.HeaderSize);
                    SendType = SendType.Next;
                    ushort timeoutCount;
                    Timeout = Config.GetTimeout(Data.Length, out timeoutCount);
                    if (!SslStream.BeginWrite(Data.Array, Data.Start, Data.Length, sendCallback, this).CompletedSynchronously)
                    {
                        Http.Header.ReceiveTimeout.Push(this, socket, timeoutCount);
                    }
                    return(true);
                }
                ResponseSize = response.BodySize;
                fixed(byte *headerBufferFixed = Header.Buffer.Buffer)
                {
                    byte *        responseSizeFixed = headerBufferFixed + (Header.Buffer.StartIndex + Http.Header.ReceiveBufferSize);
                    RangeLength   responseSizeIndex, bodySizeIndex = new RangeLength(), rangeStartIndex = new RangeLength(), rangeEndIndex = new RangeLength();
                    ResponseState state = response.ResponseState;

                    if (Header.IsRange != 0 && (responseFlag & ResponseFlag.IsPool) != 0)
                    {
                        if (Header.IsFormatRange != 0 || Header.FormatRange(ResponseSize))
                        {
                            if (state == ResponseState.Ok200)
                            {
                                long rangeStart = Header.RangeStart, rangeEnd = Header.RangeEnd;
                                rangeStartIndex = Number.ToBytes((ulong)rangeStart, responseSizeFixed + 20 * 2);
                                rangeEndIndex   = Number.ToBytes((ulong)rangeEnd, responseSizeFixed + 20 * 3);
                                bodySizeIndex   = Number.ToBytes((ulong)ResponseSize, responseSizeFixed + 20);
                                response.State  = state = ResponseState.PartialContent206;
                                ResponseSize    = Header.RangeSize;
                            }
                        }
                        else
                        {
                            ResponseSize = 0;
                            ResponseError(ResponseState.RangeNotSatisfiable416);
                            return(true);
                        }
                    }
                    if ((ulong)ResponseSize < 10)
                    {
                        *responseSizeFixed = (byte)((int)ResponseSize + '0');
                        responseSizeIndex = new RangeLength(0, 1);
                    }
                    else
                    {
                        responseSizeIndex = Number.ToBytes((ulong)ResponseSize, responseSizeFixed);
                    }
                    ResponseStateAttribute stateAttribute = EnumAttribute <ResponseState, ResponseStateAttribute> .Array((byte)state);

                    if (stateAttribute == null)
                    {
                        stateAttribute = EnumAttribute <ResponseState, ResponseStateAttribute> .Array((byte)ResponseState.ServerError500);
                    }
                    int index = httpVersionSize + stateAttribute.Text.Length + contentLengthSize + responseSizeIndex.Length + 2 + 2;

                    if (state == ResponseState.PartialContent206)
                    {
                        index += rangeSize + rangeStartIndex.Length + rangeEndIndex.Length + bodySizeIndex.Length + 2 + 2;
                    }
                    Cookie cookie = null;

                    SubBuffer.PoolBufferFull buffer = GetBuffer(index = GetResponseHeaderIndex(response, index, ref cookie));
                    fixed(byte *bufferFixed = buffer.Buffer)
                    {
                        byte *bufferStart = bufferFixed + buffer.StartIndex, write = bufferStart + httpVersionSize;

                        writeHttpVersion(bufferStart);
                        stateAttribute.Write(write);
                        writeContentLength(write += stateAttribute.Text.Length);
                        Memory.SimpleCopyNotNull64(responseSizeFixed + responseSizeIndex.Start, write += contentLengthSize, responseSizeIndex.Length);
                        *(short *)(write += responseSizeIndex.Length) = 0x0a0d;
                        write += sizeof(short);
                        if (state == ResponseState.PartialContent206)
                        {
                            writeRange(write);
                            Memory.SimpleCopyNotNull64(responseSizeFixed + (rangeStartIndex.Start + 20 * 2), write += rangeSize, rangeStartIndex.Length);
                            *(write += rangeStartIndex.Length) = (byte)'-';
                            Memory.SimpleCopyNotNull64(responseSizeFixed + (rangeEndIndex.Start + 20 * 3), ++write, rangeEndIndex.Length);
                            *(write += rangeEndIndex.Length) = (byte)'/';
                            Memory.SimpleCopyNotNull64(responseSizeFixed + (bodySizeIndex.Start + 20), ++write, bodySizeIndex.Length);
                            *(short *)(write += bodySizeIndex.Length) = 0x0a0d;
                            write += sizeof(short);
                        }
                        index = (int)(CreateResponseHeader(response, cookie, write, index) - bufferStart);
                        //                    if (checkIndex != index)
                        //                    {
                        //                        Server.RegisterServer.TcpServer.Log.add(Log.Type.Fatal, "responseHeader checkIndex[" + checkIndex.toString() + "] != index[" + index.toString() + @"]
                        //" + System.Text.Encoding.ASCII.GetString(buffer.Buffer, buffer.StartIndex, index));
                        //                    }
                        if (ResponseSize != 0)
                        {
                            switch (response.Type)
                            {
                            case ResponseType.ByteArray:
                                if (buffer.Length - index >= (int)ResponseSize)
                                {
                                    System.Buffer.BlockCopy(response.Body.Array, state == ResponseState.PartialContent206 ? (int)Header.RangeStart : 0, buffer.Buffer, buffer.StartIndex + index, (int)ResponseSize);
                                    index       += (int)ResponseSize;
                                    ResponseSize = 0;
                                }
                                break;

                            case ResponseType.SubByteArray:
                                if (Header.IsKeepAlive != 0 && (responseFlag & ResponseFlag.CanHeaderSize) != 0 && index <= response.Body.Start && Header.IsRange == 0)
                                {
                                    if ((socket = Socket) == null)
                                    {
                                        return(false);

                                        fixed(byte *bodyFixed = response.Body.Array) Memory.CopyNotNull(bufferStart, bodyFixed + response.Body.Start - index, index);

                                        response.SetHeaderSize(index);

                                        Data = response.Body;
                                        Data.MoveStart(-response.HeaderSize);
                                        SendType = SendType.Next;
                                        ushort timeoutCount;
                                        Timeout = Config.GetTimeout(Data.Length, out timeoutCount);
                                        if (!SslStream.BeginWrite(Data.Array, Data.Start, Data.Length, sendCallback, this).CompletedSynchronously)
                                        {
                                            Http.Header.ReceiveTimeout.Push(this, socket, timeoutCount);
                                        }
                                        return(true);
                                }
                                goto COPY;

                            case ResponseType.SubBuffer:
COPY:
                                if (buffer.Length - index >= (int)ResponseSize)
                                {
                                    System.Buffer.BlockCopy(response.Body.Array, state == ResponseState.PartialContent206 ? response.Body.Start + (int)Header.RangeStart : response.Body.Start, buffer.Buffer, buffer.StartIndex + index, (int)ResponseSize);
                                    index       += (int)ResponseSize;
                                    ResponseSize = 0;
                                }
                                break;
                            }
                        }
                    }
                    if ((socket = Socket) != null)
                    {
                        if (ResponseSize == 0)
                        {
                            SendType = SendType.Next;
                        }
                        else
                        {
                            this.HttpResponse = response;
                            SendType          = SendType.Body;
                            response          = null;
                        }
                        Timeout = Config.GetTimeout(index);
                        if (!SslStream.BeginWrite(buffer.Buffer, buffer.StartIndex, index, sendCallback, this).CompletedSynchronously)
                        {
                            Http.Header.ReceiveTimeout.Push(this, socket);
                        }
                        return(true);
                    }
                }
            }
            catch (Exception error)
            {
                Server.RegisterServer.TcpServer.Log.Add(Log.LogType.Error, error);
            }
            finally { Http.Response.Push(ref response); }
            return(false);
        }
Ejemplo n.º 21
0
 internal void SetJsContentType(HttpDomainServer.FileServer domainServer)
 {
     ContentTypeData = domainServer.JsContentType;
     Flag           |= contentTypeFlag;
 }
Ejemplo n.º 22
0
        /// <summary>
        /// 获取 HTTP 响应头部缓冲区长度
        /// </summary>
        /// <param name="response"></param>
        /// <param name="index"></param>
        /// <param name="cookie">Cookie</param>
        /// <returns></returns>
        internal int GetResponseHeaderIndex(Response response, int index, ref Cookie cookie)
        {
            ResponseFlag responseFlag = response.Flag;

            if (isResponseServer)
            {
                index += AutoCSerServer.Length;
            }
            if ((responseFlag & ResponseFlag.Location) != 0)
            {
                index += locationSize + response.Location.Length + 2;
            }
            if ((responseFlag & ResponseFlag.LastModified) != 0)
            {
                index += lastModifiedSize + response.LastModifiedData.Length + 2;
            }
            if ((responseFlag & ResponseFlag.CacheControl) != 0)
            {
                index += cacheControlSize + response.CacheControlData.Length + 2;
            }
            if ((responseFlag & ResponseFlag.ContentType) != 0)
            {
                index += contentTypeSize + response.ContentTypeData.Length + 2;
            }
            if ((responseFlag & ResponseFlag.ContentEncoding) != 0)
            {
                index += contentEncodingSize + response.ContentEncoding.Length + 2;
            }
            if ((responseFlag & ResponseFlag.ETag) != 0)
            {
                index += eTagSize + response.ETagData.Length + 2 + 1;
            }
            if ((responseFlag & ResponseFlag.ContentDisposition) != 0)
            {
                index += contentDispositionSize + response.ContentDispositionData.Length + 2;
            }
            if ((responseFlag & ResponseFlag.AccessControlAllowOrigin) != 0)
            {
                index += accessControlAllowOriginSize + response.AccessControlAllowOrigin.Length + 2;
            }
            if (HttpHeader.IsKeepAlive != 0)
            {
                index += keepAliveSize;
            }
            if (isResponseDate)
            {
                index += dateSize + Date.ToByteLength + 2;
            }
            if ((responseFlag & ResponseFlag.Cookie) != 0)
            {
                Cookie nextCookie = cookie = response.GetCookieClear();
                while ((nextCookie = nextCookie.GetSize(ref index)) != null)
                {
                    ;
                }
            }
            //int checkIndex = index;
            if (HttpHeader.Method == MethodType.HEAD)
            {
                ResponseSize = 0;
                index       += 5;
            }
            else if (ResponseSize > 1500 - 20 || (int)ResponseSize <= 5)
            {
                index += 5;
            }
            else if ((index += (int)ResponseSize) > Http.Header.NameStartIndex)
            {
                index -= (int)ResponseSize - 5;
            }
            return(index);
        }
Ejemplo n.º 23
0
        /// <summary>
        /// 创建 HTTP 响应头部
        /// </summary>
        /// <param name="response"></param>
        /// <param name="cookie"></param>
        /// <param name="write"></param>
        /// <param name="index"></param>
        /// <returns></returns>
        internal byte *CreateResponseHeader(Response response, Cookie cookie, byte *write, int index)
        {
            ResponseFlag responseFlag = response.Flag;

            if ((responseFlag & ResponseFlag.Location) != 0)
            {
                writeLocation(write);

                fixed(byte *locationFixed = response.Location.Array) Memory.SimpleCopyNotNull64(locationFixed + response.Location.Start, write += locationSize, index = response.Location.Length);

                *(short *)(write += index) = 0x0a0d;
                write += sizeof(short);
            }
            if ((responseFlag & ResponseFlag.CacheControl) != 0)
            {
                writeCacheControl(write);
                Memory.SimpleCopyNotNull64(response.CacheControlData, write += cacheControlSize, index = response.CacheControlData.Length);
                *(short *)(write += index) = 0x0a0d;
                write += sizeof(short);
            }
            if ((responseFlag & ResponseFlag.ContentType) != 0)
            {
                writeContentType(write);
                Memory.SimpleCopyNotNull64(response.ContentTypeData, write += contentTypeSize, index = response.ContentTypeData.Length);
                *(short *)(write += index) = 0x0a0d;
                write += sizeof(short);
            }
            if ((responseFlag & ResponseFlag.ContentEncoding) != 0)
            {
                writeContentEncoding(write);
                Memory.SimpleCopyNotNull64(response.ContentEncoding, write += contentEncodingSize, index = response.ContentEncoding.Length);
                *(short *)(write += index) = 0x0a0d;
                write += sizeof(short);
            }
            if ((responseFlag & ResponseFlag.ETag) != 0)
            {
                writeETag(write);
                Memory.SimpleCopyNotNull64(response.ETagData, write += eTagSize, index = response.ETagData.Length);
                *(int *)(write += index) = '"' + 0x0a0d00;
                write += 3;
            }
            if ((responseFlag & ResponseFlag.ContentDisposition) != 0)
            {
                writeContentDisposition(write);
                Memory.SimpleCopyNotNull64(response.ContentDispositionData, write += contentDispositionSize, index = response.ContentDispositionData.Length);
                *(short *)(write += index) = 0x0a0d;
                write += sizeof(short);
            }
            if ((responseFlag & ResponseFlag.AccessControlAllowOrigin) != 0)
            {
                writeAccessControlAllowOrigin(write);

                fixed(byte *requestBufferFixed = HttpHeader.Buffer.Buffer) Memory.SimpleCopyNotNull64(requestBufferFixed + HttpHeader.Buffer.StartIndex + response.AccessControlAllowOrigin.StartIndex, write += accessControlAllowOriginSize, index = response.AccessControlAllowOrigin.Length);

                *(short *)(write += index) = 0x0a0d;
                write += sizeof(short);
            }
            if (cookie != null)
            {
                Cookie writeCookie = cookie;
                int    cookieCount = 0;
                do
                {
                    Cookie nextCookie = writeCookie.Write(ref write);
                    ++cookieCount;
                    if (nextCookie == null)
                    {
                        if (cookieCount == 1)
                        {
                            Cookie.YieldPool.Default.PushNotNull(cookie);
                        }
                        else
                        {
                            Cookie.YieldPool.Default.PushLink(cookie, writeCookie, cookieCount);
                        }
                        break;
                    }
                    writeCookie = nextCookie;
                }while (true);
            }
            if ((responseFlag & ResponseFlag.LastModified) != 0)
            {
                writeLastModified(write);
                Memory.SimpleCopyNotNull64(response.LastModifiedData, write += lastModifiedSize, index = response.LastModifiedData.Length);
                *(short *)(write += index) = 0x0a0d;
                write += sizeof(short);
            }
            if (HttpHeader.IsKeepAlive != 0)
            {
                writeKeepAlive(write);
                write += keepAliveSize;
            }
            if (isResponseServer)
            {
                Memory.SimpleCopyNotNull64(responseServer.Byte, write, AutoCSerServer.Length);
                write += AutoCSerServer.Length;
            }
            if (isResponseDate)
            {
                writeDate(write);
                getDate(write += dateSize);
                *(int *)(write += Date.ToByteLength) = 0x0a0d0a0d;
                write += sizeof(int);
            }
            else
            {
                *(short *)(write) = 0x0a0d;
                write            += sizeof(short);
            }
            return(write);
        }
Ejemplo n.º 24
0
 internal void SetLocation(byte[] data, int index, int length, ResponseState state = ResponseState.Found302)
 {
     Location.Set(data, index, length);
     State = state;
     Flag  = (Flag | ResponseFlag.Location | ResponseFlag.State) & (ResponseFlag.All ^ ResponseFlag.AccessControlAllowOrigin);
 }
Ejemplo n.º 25
0
        /// <summary>
        /// HTTP 响应头部输出
        /// </summary>
        /// <param name="response"></param>
        /// <returns></returns>
        private bool responseHeader(ref Response response)
        {
            try
            {
                if (!response.IsFile)
                {
                    ResponseError(ResponseState.NotFound404);
                    return true;
                }
                System.Net.Sockets.Socket socket;
                ResponseFlag responseFlag = response.Flag;
                if (response.Body.Length != 0 && Header.IsKeepAlive != 0 && (responseFlag & ResponseFlag.HeaderSize) != 0 && Header.IsRange == 0 && Header.Method != MethodType.HEAD)
                {
                    if ((socket = Socket) == null) return false;
                    Data = response.Body;
                    Data.MoveStart(-response.HeaderSize);
                    SendType = SendType.Next;
                    Timeout = Config.GetTimeout(Data.Length);
#if DOTNET2
                    SocketError socketError;
                    IAsyncResult async = socket.BeginSend(Data.Array, Data.Start, Data.Length, SocketFlags.None, out socketError, onSendAsyncCallback, socket);
                    if (socketError == SocketError.Success)
                    {
                        if (!async.CompletedSynchronously) Http.Header.ReceiveTimeout.Push(this, socket);
                        return true;
                    }
                    return false;
#else
                    sendAsyncLock.EnterSleepFlag();
                    sendAsyncEventArgs.SetBuffer(Data.Array, Data.Start, Data.Length);
                    if (socket.SendAsync(sendAsyncEventArgs))
                    {
                        sendAsyncLock.SleepFlag = 0;
                        Http.Header.ReceiveTimeout.Push(this, socket);
                        sendAsyncLock.Exit();
                        return true;
                    }
                    sendAsyncLock.ExitSleepFlag();
                    if (--sendDepth == 0)
                    {
                        sendDepth = maxSendDepth;
                        OnSendThreadArray.Default.CurrentThread.Add(this);
                        return true;
                    }
                    return onSend();
#endif
                }
                ResponseSize = response.BodySize;
                fixed (byte* headerBufferFixed = Header.Buffer.GetFixedBuffer())
                {
                    byte* responseSizeFixed = headerBufferFixed + (Header.Buffer.StartIndex + Http.Header.ReceiveBufferSize);
                    RangeLength responseSizeIndex, bodySizeIndex = new RangeLength(), rangeStartIndex = new RangeLength(), rangeEndIndex = new RangeLength();
                    ResponseState state = response.ResponseState;
                    if (Header.IsRange != 0 && (responseFlag & ResponseFlag.IsPool) != 0)
                    {
                        if (Header.IsFormatRange != 0 || Header.FormatRange(ResponseSize))
                        {
                            if (state == ResponseState.Ok200)
                            {
                                long rangeStart = Header.RangeStart, rangeEnd = Header.RangeEnd;
                                rangeStartIndex = NumberExtension.ToBytes((ulong)rangeStart, responseSizeFixed + 20 * 2);
                                rangeEndIndex = NumberExtension.ToBytes((ulong)rangeEnd, responseSizeFixed + 20 * 3);
                                bodySizeIndex = NumberExtension.ToBytes((ulong)ResponseSize, responseSizeFixed + 20);
                                response.State = state = ResponseState.PartialContent206;
                                ResponseSize = Header.RangeSize;
                            }
                        }
                        else
                        {
                            ResponseSize = 0;
                            ResponseError(ResponseState.RangeNotSatisfiable416);
                            return true;
                        }
                    }
                    if ((ulong)ResponseSize < 10)
                    {
                        *responseSizeFixed = (byte)((int)ResponseSize + '0');
                        responseSizeIndex = new RangeLength(0, 1);
                    }
                    else responseSizeIndex = NumberExtension.ToBytes((ulong)ResponseSize, responseSizeFixed);
                    ResponseStateAttribute stateAttribute = EnumAttribute<ResponseState, ResponseStateAttribute>.Array((byte)state);
                    if (stateAttribute == null) stateAttribute = EnumAttribute<ResponseState, ResponseStateAttribute>.Array((byte)ResponseState.ServerError500);
                    int index = httpVersionSize + stateAttribute.Text.Length + contentLengthSize + responseSizeIndex.Length + 2 + 2;
                    if (state == ResponseState.PartialContent206)
                    {
                        index += rangeSize + rangeStartIndex.Length + rangeEndIndex.Length + bodySizeIndex.Length + 2 + 2;
                    }
                    Cookie cookie = null;
                    SubBuffer.PoolBufferFull buffer = GetBuffer(index = GetResponseHeaderIndex(response, index, ref cookie));
                    fixed (byte* bufferFixed = buffer.GetFixedBuffer())
                    {
                        byte* bufferStart = bufferFixed + buffer.StartIndex, write = bufferStart + httpVersionSize;
                        writeHttpVersion(bufferStart);
                        stateAttribute.Write(write);
                        writeContentLength(write += stateAttribute.Text.Length);
                        AutoCSer.Memory.Common.SimpleCopyNotNull64(responseSizeFixed + responseSizeIndex.Start, write += contentLengthSize, responseSizeIndex.Length);
                        *(short*)(write += responseSizeIndex.Length) = 0x0a0d;
                        write += sizeof(short);
                        if (state == ResponseState.PartialContent206)
                        {
                            writeRange(write);
                            AutoCSer.Memory.Common.SimpleCopyNotNull64(responseSizeFixed + (rangeStartIndex.Start + 20 * 2), write += rangeSize, rangeStartIndex.Length);
                            *(write += rangeStartIndex.Length) = (byte)'-';
                            AutoCSer.Memory.Common.SimpleCopyNotNull64(responseSizeFixed + (rangeEndIndex.Start + 20 * 3), ++write, rangeEndIndex.Length);
                            *(write += rangeEndIndex.Length) = (byte)'/';
                            AutoCSer.Memory.Common.SimpleCopyNotNull64(responseSizeFixed + (bodySizeIndex.Start + 20), ++write, bodySizeIndex.Length);
                            *(short*)(write += bodySizeIndex.Length) = 0x0a0d;
                            write += sizeof(short);
                        }
                        index = (int)(CreateResponseHeader(response, cookie, write, index) - bufferStart);
                        //                    if (checkIndex != index)
                        //                    {
                        //                        Server.RegisterServer.TcpServer.Log.add(Log.Type.Fatal, "responseHeader checkIndex[" + checkIndex.toString() + "] != index[" + index.toString() + @"]
                        //" + System.Text.Encoding.ASCII.GetString(buffer.Buffer, buffer.StartIndex, index));
                        //                    }
                        if (ResponseSize != 0)
                        {
                            switch (response.Type)
                            {
                                case ResponseType.ByteArray:
                                    if (buffer.Length - index >= (int)ResponseSize)
                                    {
                                        System.Buffer.BlockCopy(response.Body.Array, state == ResponseState.PartialContent206 ? (int)Header.RangeStart : 0, buffer.Buffer, buffer.StartIndex + index, (int)ResponseSize);
                                        index += (int)ResponseSize;
                                        ResponseSize = 0;
                                    }
                                    break;
                                case ResponseType.SubByteArray:
                                    if (Header.IsKeepAlive != 0 && (responseFlag & ResponseFlag.CanHeaderSize) != 0 && index <= response.Body.Start && Header.IsRange == 0)
                                    {
                                        if ((socket = Socket) == null) return false;
                                        fixed (byte* bodyFixed = response.Body.GetFixedBuffer()) AutoCSer.Memory.Common.CopyNotNull(bufferStart, bodyFixed + response.Body.Start - index, index);
                                        response.SetHeaderSize(index);

                                        Data = response.Body;
                                        Data.MoveStart(-response.HeaderSize);
                                        SendType = SendType.Next;
                                        Timeout = Config.GetTimeout(Data.Length);
#if DOTNET2
                                    SocketError socketError;
                                    IAsyncResult async = socket.BeginSend(Data.Array, Data.Start, Data.Length, SocketFlags.None, out socketError, onSendAsyncCallback, socket);
                                    if (socketError == SocketError.Success)
                                    {
                                        if (!async.CompletedSynchronously) Http.Header.ReceiveTimeout.Push(this, socket);
                                        return true;
                                    }
                                    return false;
#else
                                        sendAsyncLock.EnterSleepFlag();
                                        sendAsyncEventArgs.SetBuffer(Data.Array, Data.Start, Data.Length);
                                        if (socket.SendAsync(sendAsyncEventArgs))
                                        {
                                            sendAsyncLock.SleepFlag = 0;
                                            Http.Header.ReceiveTimeout.Push(this, socket);
                                            sendAsyncLock.Exit();
                                            return true;
                                        }
                                        sendAsyncLock.ExitSleepFlag();
                                        if (--sendDepth == 0)
                                        {
                                            sendDepth = maxSendDepth;
                                            OnSendThreadArray.Default.CurrentThread.Add(this);
                                            return true;
                                        }
                                        return onSend();
#endif
                                    }
                                    goto COPY;
                                case ResponseType.SubBuffer:
                                    COPY:
                                    if (buffer.Length - index >= (int)ResponseSize)
                                    {
                                        System.Buffer.BlockCopy(response.Body.Array, state == ResponseState.PartialContent206 ? response.Body.Start + (int)Header.RangeStart : response.Body.Start, buffer.Buffer, buffer.StartIndex + index, (int)ResponseSize);
                                        index += (int)ResponseSize;
                                        ResponseSize = 0;
                                    }
                                    break;
                            }
                        }
                    }
                    if ((socket = Socket) != null)
                    {
                        if (ResponseSize == 0) SendType = SendType.Next;
                        else
                        {
                            this.HttpResponse = response;
                            SendType = SendType.Body;
                            response = null;
                        }
                        Data.Set(buffer.Buffer, buffer.StartIndex, index);
                        Timeout = Config.GetTimeout(Data.Length);
#if DOTNET2
                    SocketError socketError;
                    IAsyncResult async = socket.BeginSend(Data.Array, Data.Start, index, SocketFlags.None, out socketError, onSendAsyncCallback, socket);
                    if (socketError == SocketError.Success)
                    {
                        if (!async.CompletedSynchronously) Http.Header.ReceiveTimeout.Push(this, socket);
                        return true;
                    }
                    return false;
#else
                        sendAsyncLock.EnterSleepFlag();
                        sendAsyncEventArgs.SetBuffer(Data.Array, Data.Start, index);
                        if (socket.SendAsync(sendAsyncEventArgs))
                        {
                            sendAsyncLock.SleepFlag = 0;
                            Http.Header.ReceiveTimeout.Push(this, socket);
                            sendAsyncLock.Exit();
                            return true;
                        }
                        sendAsyncLock.ExitSleepFlag();
                        if (--sendDepth == 0)
                        {
                            sendDepth = maxSendDepth;
                            OnSendThreadArray.Default.CurrentThread.Add(this);
                            return true;
                        }
                        return onSend();
#endif
                    }
                }
            }
            catch (Exception error)
            {
                Server.RegisterServer.TcpServer.Log.Exception(error, null, LogLevel.Exception | LogLevel.AutoCSer);
            }
            finally { Http.Response.Push(ref response); }
            return false;
        }
Ejemplo n.º 26
0
        public IEnumerable <ResponseFlag> UploadCropImage(UploadMandateModel context)
        {
            List <ResponseFlag> common = new List <ResponseFlag>();

            ResponseFlag Flag = new ResponseFlag();

            string UserId      = Dbsecurity.Decrypt(context.UserId);
            string ID          = Convert.ToString(Dbsecurity.Decrypt(context.MdtID));
            string No          = Convert.ToString(Dbsecurity.Decrypt(context.RefrenceNo));
            string APPId       = Convert.ToString(Dbsecurity.Decrypt(context.AppID));
            string extension   = string.Empty;
            string JPGFilepath = string.Empty;

            byte[] bytes = System.Convert.FromBase64String(context.ScannedImage);
            extension = context.Extention;
            if (extension == ".jpg" || extension == ".jpeg" || extension == ".png" || extension == ".gif" || extension == ".bmp")
            {
                string fileName1 = ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg";
                if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/FullMandate/" + APPId + "/" + ID)))
                {
                    Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/FullMandate/" + APPId + "/" + ID));
                }
                System.IO.DirectoryInfo di = new DirectoryInfo(HttpContext.Current.Server.MapPath("~/FullMandate/" + APPId + "/" + ID));
                foreach (FileInfo file in di.GetFiles())
                {
                    file.Delete();
                }
                string targetPath = HttpContext.Current.Server.MapPath("~/FullMandate/" + APPId + "/" + ID + @"\" + fileName1);
                using (System.Drawing.Image image = new Bitmap(new MemoryStream(bytes)))
                {
                    image.Save(targetPath, ImageFormat.Png);
                }
            }
            bool Flag1 = Directory.Exists(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + ID));

            if (!Flag1)
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + ID));
            }
            else
            {
                System.IO.DirectoryInfo di = new DirectoryInfo(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + ID));
                foreach (FileInfo file in di.GetFiles())
                {
                    file.Delete();
                }
            }
            string croppedFileName = string.Empty;
            string croppedFilePath = string.Empty;

            string fileName = ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg";
            string filePath = Path.Combine(HttpContext.Current.Server.MapPath("~/FullMandate/"), ConfigurationManager.AppSettings["DownloadFileName" + context.AppID].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg");

            if (File.Exists(filePath))
            {
                System.Drawing.Image orgImg     = System.Drawing.Image.FromFile(filePath);
                Rectangle            areaToCrop = new Rectangle(Convert.ToInt32(0),
                                                                Convert.ToInt32(0),
                                                                Convert.ToInt32(orgImg.Width),
                                                                Convert.ToInt32(orgImg.Height));

                if (orgImg.Width > orgImg.Height)
                {
                    Greater = true;
                }
                else
                {
                    Greater = false;
                }
                try
                {
                    Bitmap bitMap = new Bitmap(orgImg.Width, orgImg.Height, System.Drawing.Imaging.PixelFormat.Format16bppRgb555);
                    using (Graphics g = Graphics.FromImage(bitMap))
                    {
                        //Draw image to screen
                        g.DrawImage(orgImg, new Rectangle(0, 0, bitMap.Width, bitMap.Height), areaToCrop, GraphicsUnit.Pixel);
                        g.CompositingQuality = CompositingQuality.HighQuality;
                        g.SmoothingMode      = SmoothingMode.HighQuality;
                        g.InterpolationMode  = InterpolationMode.HighQualityBicubic;
                    }

                    bitMap.SetResolution(96, 96);
                    croppedFileName = ConfigurationManager.AppSettings["DownloadFileName" + APPId].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg";
                    //Create path to store the cropped image
                    if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/CropImage/" + APPId + "/" + ID)))
                    {
                        Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/CropImage/" + APPId + "/" + ID));
                    }
                    croppedFilePath = Path.Combine(HttpContext.Current.Server.MapPath("~/CropImage/" + APPId + "/" + ID), croppedFileName);
                    bitMap.Save(croppedFilePath);
                    var CropImagePath = Path.Combine(HttpContext.Current.Server.MapPath("~/CropImage/" + APPId + "/" + ID), ConfigurationManager.AppSettings["DownloadFileName" + APPId].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg");
                    System.Drawing.Image CropImage = System.Drawing.Image.FromFile(CropImagePath);
                    using (var image = CropImage)
                    {
                        int newWidth  = 0;
                        int newHeight = 0;
                        if (Greater == true)
                        {
                            newWidth  = 827;    // New Width of Image in Pixel
                            newHeight = 356;
                            //newWidth = 4000; // New Width of Image in Pixel
                            //newHeight = 1700;
                        }
                        else
                        {
                            newWidth  = 356;
                            newHeight = 827;
                            //newWidth = 1700;
                            //newHeight = 4000;
                        }

                        var thumbImg     = new Bitmap(newWidth, newHeight, System.Drawing.Imaging.PixelFormat.Format16bppRgb555);
                        var thumbGraph   = Graphics.FromImage(thumbImg);
                        var imgRectangle = new Rectangle(0, 0, newWidth, newHeight);

                        thumbGraph.DrawImage(image, imgRectangle);
                        thumbImg.SetResolution(100, 100);

                        System.Drawing.Bitmap b0 = CopyToBpp(thumbImg, 8);
                        b0.SetResolution(100, 100);
                        JPGFilepath     = "../MandateFile/" + APPId + "/" + ID + "/" + croppedFileName;
                        croppedFileName = ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg";
                        croppedFilePath = Path.Combine(HttpContext.Current.Server.MapPath("~/CropImage/" + APPId + "/" + ID), croppedFileName);
                        ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
                        System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
                        EncoderParameters myEncoderParameters    = new EncoderParameters(1);
                        EncoderParameter  myEncoderParameter     = new EncoderParameter(myEncoder, 50L);
                        myEncoderParameters.Param[0] = myEncoderParameter;
                        b0.Save(croppedFilePath, jpgEncoder, myEncoderParameters);
                    }
                    var CropImagePath1 = Path.Combine(HttpContext.Current.Server.MapPath("~/CropImage/" + APPId + "/" + ID), ConfigurationManager.AppSettings["DownloadFileName" + APPId].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg");
                    System.Drawing.Image CropImage1 = System.Drawing.Image.FromFile(CropImagePath1);
                    bool result = true;
                    using (var image1 = CropImage1)
                    {
                        int newWidth  = 0;
                        int newHeight = 0;
                        if (Greater == true)
                        {
                            newWidth  = CropImage1.Width;
                            newHeight = CropImage1.Height;
                            //newWidth = 2800;
                            //newHeight = 1200;
                        }
                        else
                        {
                            newWidth  = CropImage1.Width;
                            newHeight = CropImage1.Height;
                            //newWidth = 1200;
                            //newHeight = 2800;
                        }
                        var thumbImg1     = new Bitmap(newWidth, newHeight);
                        var thumbGraph1   = Graphics.FromImage(thumbImg1);
                        var imgRectangle1 = new Rectangle(0, 0, newWidth, newHeight);
                        thumbGraph1.DrawImage(image1, imgRectangle1);
                        System.Drawing.Bitmap b1 = CopyToBpp(thumbImg1, 1);
                        b1.SetResolution(200, 200);
                        croppedFileName = ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg";
                        croppedFilePath = Path.Combine(HttpContext.Current.Server.MapPath("~/CropImage/" + APPId + "/" + ID), croppedFileName);

                        ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Tiff);
                        System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Compression;
                        EncoderParameters myEncoderParameters    = new EncoderParameters(1);
                        EncoderParameter  myEncoderParameter     = new EncoderParameter(myEncoder,
                                                                                        (long)EncoderValue.CompressionCCITT4);
                        myEncoderParameters.Param[0] = myEncoderParameter;
                        b1.Save(croppedFilePath, jpgEncoder, myEncoderParameters);
                        List <Checklogo> dataList = new List <Checklogo>();
                        var Result2 = dbcontext.MultipleResults("[dbo].[Sp_Mandate]").With <Checklogo>().Execute("@QueryType", "@MandateId", "CheckLogo", ID);
                        dataList = Result2.FirstOrDefault().Cast <Checklogo>().ToList();
                        string isQR = dataList.Cast <Checklogo>().ToList().Select(x => x.PrintQR).First().ToString();
                        if (isQR == "True")
                        {
                            result = (Convert.ToString(ID + "_" + No) == GetMandatefromQR(croppedFilePath, ID)) ? true : false;
                        }
                    }
                    orgImg.Dispose();
                    bitMap = null;
                    if (File.Exists(CropImagePath1))
                    {
                        File.Delete(CropImagePath1);
                    }
                    if (File.Exists(filePath))
                    {
                        File.Delete(filePath);
                    }
                    if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/FullMandate/" + APPId + "/" + ID)))
                    {
                        Directory.Delete(HttpContext.Current.Server.MapPath("~/FullMandate/" + APPId + "/" + ID));
                    }
                    if (Directory.Exists(HttpContext.Current.Server.MapPath("~/CropImage/" + APPId + "/" + ID)))
                    {
                        Directory.Delete(HttpContext.Current.Server.MapPath("~/CropImage/" + APPId + "/" + ID));
                    }
                    if (result)
                    {
                        Flag.Flag      = "1";
                        Flag.FlagValue = "Image cropped and saved successfully";
                        string Fullmandatepath = Path.Combine(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + ID), ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg");
                        Flag.Base64image = base64image.ConvertImageBase64(Fullmandatepath);
                        common.Add(Flag);
                        QuickCheck_AngularEntities dbcontext = new QuickCheck_AngularEntities();
                        List <GetLogo>             dataList1 = new List <GetLogo>();
                        var Result2 = dbcontext.MultipleResults("[dbo].[Sp_Mandate]").With <GetLogo>().Execute("@QueryType", "@TIPPath", "@PNGPath", "@MandateId", "@UserId", "UpdatePNGTIP",
                                                                                                               Convert.ToString(filePath), Convert.ToString(JPGFilepath), Convert.ToString(ID), UserId);
                    }
                    else
                    {
                        Flag.Flag      = "0";
                        Flag.FlagValue = "Invalid Mandate. Please Re-Upload Valid Mandate";
                        common.Add(Flag);

                        if (File.Exists(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + ID + "/" + ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".tif")))
                        {
                            File.Delete(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + ID + "/" + ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".tif"));
                        }

                        if (File.Exists(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + ID + "/" + ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg")))
                        {
                            File.Delete(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + ID + "/" + ConfigurationManager.AppSettings["DownloadFileName"].ToString() + "_" + DateTime.Now.ToString("ddMMyyyy") + "_" + No + ".jpg"));
                        }

                        List <GetLogo>             dataList1 = new List <GetLogo>();
                        QuickCheck_AngularEntities dbcontext = new QuickCheck_AngularEntities();
                        var Result2 = dbcontext.MultipleResults("[dbo].[Sp_Mandate]").With <GetLogo>().Execute("@QueryType", "@TIPPath", "@PNGPath", "@MandateId", "@UserId", "UpdatePNGTIP",
                                                                                                               null, null, ID, UserId);
                        if (Directory.Exists(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + ID)))
                        {
                            Directory.Delete(HttpContext.Current.Server.MapPath("~/MandateFile/" + APPId + "/" + ID));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Flag.Flag      = "0";
                    Flag.FlagValue = "Oops!! error occured : " + ex.Message.ToString();
                    common.Add(Flag);
                }
                finally
                {
                    fileName        = string.Empty;
                    filePath        = string.Empty;
                    croppedFileName = string.Empty;
                    croppedFilePath = string.Empty;
                }
            }
            return(common);
        }