Example #1
0
        public IActionResult ValidationFromSAP(string LeaveID, string FromDate, string ToDate, string LeaveShift)
        {
            string valid = "";
            bool   flag  = true;

            try
            {
                string esbfromdate = FromDate.Trim().Split("/")[1] + "/" + FromDate.Trim().Split("/")[0] + "/" + FromDate.Trim().Split("/")[2];
                string esbtodate   = ToDate.Trim().Split("/")[1] + "/" + ToDate.Trim().Split("/")[0] + "/" + ToDate.Trim().Split("/")[2];
                string LeaveCode   = _ILeaveRequestViewService.GetLeaveCode(LeaveID);
                var    EmployeeID  = HttpContext.Session.GetString(Constant.EmployeeID);
                string param       = "leaves?pernr_001=" + EmployeeID + "&subty_006=" + LeaveCode + "&begda_007="
                                     + esbfromdate + "&endda_008=" + esbtodate + "&full_first_sec=" + LeaveShift + "&simulation=" + "X" + "&Deletion=" + "";
                using (HttpClient client = new HttpClient())
                {
                    string apiUrl = _rfcconfig.GetSection("MySettings").GetSection("WebApiBaseUrl").Value + param;
                    client.BaseAddress = new Uri(apiUrl);
                    client.Timeout     = TimeSpan.FromMinutes(5);
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                    var responsecli = client.GetAsync(apiUrl);
                    var data        = responsecli.Result;
                    if (data.IsSuccessStatusCode)
                    {
                        var readTask = data.Content.ReadAsStringAsync();
                        LEAVEREQUESTDETAILS leaveRequestDetails = JsonConvert.DeserializeObject <LEAVEREQUESTDETAILS>(readTask.Result);
                        if (leaveRequestDetails != null && leaveRequestDetails.IT_ERROR_TEXT != null)
                        {
                            foreach (var detail in leaveRequestDetails.IT_ERROR_TEXT)
                            {
                                if (detail.IND == "E")
                                {
                                    valid = detail.TEXT;
                                    flag  = false;
                                }
                            }
                            if (flag == true)
                            {
                                valid = "Data is Valid";
                            }
                        }
                    }
                    else
                    {
                        _logger.LogError("Gateway Timeout Error");
                        valid = "Please try after some time";
                        flag  = false;
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                flag  = false;
                valid = ex.Message;
            }
            return(Json(new { valid = valid, flag = flag }));
        }
Example #2
0
        public bool DeleteLeaveFromSAP(LeaveWithdrawalModel model)
        {
            bool     noerror = true;
            DateTime Begda   = Convert.ToDateTime(model.FromDateString);

            model.FromDateString = Begda.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
            DateTime Endda = Convert.ToDateTime(model.ToDateString);

            model.ToDateString = Endda.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
            string param = "leaves?pernr_001=" + model.EmployeeID + "&subty_006=" + model.LeaveCode + "&begda_007=" + model.FromDateString + "&endda_008=" + model.ToDateString + "&full_first_sec=" + model.LeaveShift + "&simulation=" + "" + "&Deletion=" + "X";

            using (HttpClient client = new HttpClient())
            {
                string apiUrl = _rfcconfig.GetSection("MySettings").GetSection("WebApiBaseUrl").Value + param;
                client.BaseAddress = new Uri(apiUrl);
                client.Timeout     = TimeSpan.FromMinutes(5);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                var responsecli = client.GetAsync(apiUrl);
                var data        = responsecli.Result;
                if (data.IsSuccessStatusCode)
                {
                    var readTask = data.Content.ReadAsStringAsync();
                    LEAVEREQUESTDETAILS leaveRequestDetails = JsonConvert.DeserializeObject <LEAVEREQUESTDETAILS>(readTask.Result);
                    if (leaveRequestDetails != null && leaveRequestDetails.IT_ERROR_TEXT != null)
                    {
                        foreach (var detail in leaveRequestDetails.IT_ERROR_TEXT)
                        {
                            if (detail.IND == "E")
                            {
                                noerror = false;
                            }
                        }
                    }
                }
                else
                {
                    _logger.LogError("Gateway Timeout Error" + model.EmployeeID);
                }
            }
            return(noerror);
        }
Example #3
0
        public IActionResult UploadFile(IFormFile file)
        {
            List <DisaplyError> objlist = new List <DisaplyError>();
            bool returndata             = false;

            try
            {
                DeptLeaveRequestViewModel model = new DeptLeaveRequestViewModel();
                var Filesize = 2 * 1024 * 1024; // Size Limit 2 MB.
                if (file == null || file.Length == 0)
                {
                    return(Json(new { returndata = false, msg = "Please select file Or file can not be empty" }));
                }
                if (file.Length > Filesize)
                {
                    return(Json(new { returndata = false, msg = "File size should not more than 2 MB" }));
                }
                string fname          = file.FileName;
                var    supportedTypes = new[] { "xls", "xlsx" };
                var    fileExt        = System.IO.Path.GetExtension(fname).Substring(1);
                if (!supportedTypes.Contains(fileExt))
                {
                    return(Json(new { returndata = false, msg = "Please upload only Excel File" }));
                }
                string[] arrfilename = fname.Split('.');
                string   filename    = arrfilename[0] + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + "." + arrfilename[1];

                var path = Path.Combine(
                    Directory.GetCurrentDirectory(), "wwwroot" + "/Documents/",
                    filename);
                using (var stream = new FileStream(path, FileMode.Create))
                {
                    file.CopyTo(stream);
                }
                List <DeptLeaveRequestViewModel> LeaveRequests = new List <DeptLeaveRequestViewModel>();
                FileInfo files = new FileInfo(Path.Combine(path));
                using (ExcelPackage package = new ExcelPackage(files))
                {
                    ExcelWorksheet worksheet      = package.Workbook.Worksheets[1];
                    int            rowCount       = worksheet.Dimension.Rows;
                    int            ColCount       = worksheet.Dimension.Columns;
                    var            ValidStartDate = new DateTime(DateTime.Today.Year, 1, 1);
                    var            ValidEndDate   = new DateTime(DateTime.Today.Year, 12, 31);
                    for (int row = 2; row <= rowCount; row++)
                    {
                        DeptLeaveRequestViewModel mod = new DeptLeaveRequestViewModel();
                        string   FromDateString       = worksheet.Cells[row, 3].Value.ToString();
                        DateTime FromDate             = DateTime.ParseExact(FromDateString, @"dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
                        string   ToDateString         = worksheet.Cells[row, 4].Value.ToString();
                        DateTime ToDate       = DateTime.ParseExact(ToDateString, @"dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
                        bool     chkleavecode = _rfcconfig.GetSection("DepartmentValidation").GetSection("LCode").Value.Split(',').Contains(worksheet.Cells[row, 2].Value.ToString());
                        if (chkleavecode == true)
                        {
                            if (ValidStartDate <= FromDate && FromDate <= ValidEndDate && ValidStartDate <= ToDate && ToDate <= ValidEndDate)
                            {
                                mod.EmployeeID = worksheet.Cells[row, 1].Value.ToString();
                                if (mod.EmployeeID.Length != 8)
                                {
                                    mod.EmployeeID = mod.EmployeeID.ToString().PadLeft(8, '0');
                                }
                                mod.LeaveCode  = worksheet.Cells[row, 2].Value.ToString();
                                mod.FromDate   = FromDateString;
                                mod.ToDate     = ToDateString;
                                mod.LeaveShift = Convert.ToString(worksheet.Cells[row, 5].Value);
                                mod.Remarks    = Convert.ToString(worksheet.Cells[row, 6].Value);
                                var    diffdate     = (ToDate - FromDate).TotalDays;
                                var    totalleave   = diffdate + 1;
                                double objToalLeave = Convert.ToDouble(totalleave);
                                bool   leaveind     = false;
                                if (mod.LeaveShift.ToLower() == "full day")
                                {
                                    leaveind       = true;
                                    mod.LeaveShift = "";
                                }
                                else if (mod.LeaveShift.ToLower() == "first half" || mod.LeaveShift.ToLower() == "second half")
                                {
                                    if (mod.LeaveShift.ToLower() == "first half")
                                    {
                                        mod.LeaveShift = "F";
                                    }
                                    if (mod.LeaveShift.ToLower() == "second half")
                                    {
                                        mod.LeaveShift = "S";
                                    }
                                    if (objToalLeave > 1)
                                    {
                                        DisaplyError objerror = new DisaplyError();
                                        objerror.LeaveCode  = worksheet.Cells[row, 2].Value.ToString();
                                        objerror.FromDate   = FromDateString;
                                        objerror.ToDate     = ToDateString;
                                        objerror.indicator  = "E";
                                        objerror.errormsg   = "First/Second Half availabe for only 1 day";
                                        objerror.EmployeeID = worksheet.Cells[row, 1].Value.ToString();
                                        objlist.Add(objerror);
                                    }
                                    else
                                    {
                                        leaveind     = true;
                                        objToalLeave = (totalleave) - 0.5;
                                    }
                                }
                                else
                                {
                                    DisaplyError objerror = new DisaplyError();
                                    objerror.LeaveCode  = worksheet.Cells[row, 2].Value.ToString();
                                    objerror.FromDate   = FromDateString;
                                    objerror.ToDate     = ToDateString;
                                    objerror.indicator  = "E";
                                    objerror.errormsg   = "Leave Indicator mismatch";
                                    objerror.EmployeeID = worksheet.Cells[row, 1].Value.ToString();
                                    objlist.Add(objerror);
                                }
                                mod.TotalAppliedLeave = Convert.ToDouble(objToalLeave);
                                mod.CreatedBy         = mod.EmployeeID;
                                mod.AdminID           = HttpContext.Session.GetString(Constant.AdminID);
                                if (leaveind == true)
                                {
                                    LeaveRequests.Add(mod);
                                }
                            }
                            else
                            {
                                return(Json(new { returndata = false, msg = "From date Or Todate should be current year!" }));
                            }
                        }
                        else
                        {
                            DisaplyError objerror = new DisaplyError();
                            objerror.LeaveCode  = worksheet.Cells[row, 2].Value.ToString();
                            objerror.FromDate   = FromDateString;
                            objerror.ToDate     = ToDateString;
                            objerror.indicator  = "E";
                            objerror.errormsg   = "LeaveCode is not valid";
                            objerror.EmployeeID = worksheet.Cells[row, 1].Value.ToString();
                            objlist.Add(objerror);
                        }
                    }
                    List <string> empId = new List <string>();
                    DeptLeaveRequestErrorModel model2 = new DeptLeaveRequestErrorModel();
                    dynamic indicator = "";
                    dynamic errormsg  = "";
                    foreach (var l in LeaveRequests)
                    {
                        bool   error       = false;
                        string esbfromdate = l.FromDate.Split("/")[1] + "/" + l.FromDate.Split("/")[0] + "/" + l.FromDate.Split("/")[2];
                        string esbtodate   = l.ToDate.Split("/")[1] + "/" + l.ToDate.Split("/")[0] + "/" + l.ToDate.Split("/")[2];
                        string param       = "leaves?pernr_001=" + l.EmployeeID + "&subty_006=" + l.LeaveCode + "&begda_007=" + esbfromdate + "&endda_008=" + esbtodate + "&full_first_sec=" + l.LeaveShift + "&simulation=" + "X" + "&Deletion=" + "";
                        using (HttpClient client = new HttpClient())
                        {
                            string apiUrl = _rfcconfig.GetSection("MySettings").GetSection("WebApiBaseUrl").Value + param;
                            client.BaseAddress = new Uri(apiUrl);
                            client.Timeout     = TimeSpan.FromMinutes(5);
                            client.DefaultRequestHeaders.Accept.Clear();
                            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                            var responseclient = client.GetAsync(apiUrl);
                            var data           = responseclient.Result;
                            if (data.IsSuccessStatusCode)
                            {
                                var                 readTask            = data.Content.ReadAsStringAsync();
                                DisaplyError        objerror            = new DisaplyError();
                                LEAVEREQUESTDETAILS leaveRequestDetails = JsonConvert.DeserializeObject <LEAVEREQUESTDETAILS>(readTask.Result);
                                if (leaveRequestDetails != null && leaveRequestDetails.IT_ERROR_TEXT != null)
                                {
                                    foreach (var detail in leaveRequestDetails.IT_ERROR_TEXT)
                                    {
                                        if (detail.IND == "E")
                                        {
                                            error     = true;
                                            errormsg  = detail.TEXT;
                                            indicator = detail.IND;
                                        }
                                    }
                                    if (error == false)
                                    {
                                        l.Indicator        = "S";
                                        l.ErrorMsg         = "";
                                        objerror.indicator = "S";
                                        objerror.errormsg  = "";
                                    }
                                    else
                                    {
                                        l.Indicator        = "E";
                                        l.ErrorMsg         = errormsg;
                                        objerror.errormsg  = errormsg;
                                        objerror.indicator = "E";
                                    }
                                    objerror.LeaveCode  = l.LeaveCode;
                                    objerror.EmployeeID = l.EmployeeID;
                                    objerror.FromDate   = l.FromDate;
                                    objerror.ToDate     = l.ToDate;
                                    objlist.Add(objerror);
                                }
                            }
                            else
                            {
                                _logger.LogError("Gateway timeout Error : EID - " + l.EmployeeID);
                            }
                        }
                    }
                    foreach (var lst in objlist)
                    {
                        if (lst.indicator != "E")
                        {
                            DeptLeaveRequestViewModel objmodel = new DeptLeaveRequestViewModel();
                            objmodel = Mapper.Map <DeptLeaveRequestViewModel>(_IDeptLeaveRequestViewService.GetEmpDetails(lst.EmployeeID));
                            if (objmodel.EmployeeName == null)
                            {
                                objmodel.EmployeeID = lst.EmployeeID;
                                GetdataSAP(objmodel);
                            }
                            if ((String.IsNullOrEmpty(objmodel.ApproverId) || objmodel.ApproverId.Trim() == "_"))
                            {
                                GetApproverAsync(objmodel);
                            }
                        }
                    }
                    for (int i = LeaveRequests.Count - 1; i >= 0; i--)
                    {
                        if (LeaveRequests[i].Indicator == "E")
                        {
                            LeaveRequests.RemoveAt(i);
                        }
                    }
                    if (LeaveRequests.Count > 0)
                    {
                        _IDeptLeaveRequestViewService.SaveConfirm(HttpContext.Session.GetString(Constant.AdminID), "No");
                        var result1 = _IDeptLeaveRequestViewService.SaveUploadedLeave(Mapper.Map <List <DeptLeaveRequestViewtServiceModel> >(LeaveRequests));
                        if (result1 != -99)
                        {
                            returndata = true;
                        }
                    }
                    else
                    {
                        returndata = true;
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                return(Json(new { returndata = false, msg = "Error occured while processing your request!" }));
            }
            return(Json(new { ErrorList = objlist.Where(x => x.indicator == "E"), returndata = returndata }));
        }
Example #4
0
        public string SaveDataToSAP(LeaveApprovalModelViewModel modellist, string status)
        {
            bool   valid = false;
            string msg   = "";

            try
            {
                string  Mobileno   = "";
                string  MobilenoR  = "";
                string  Approverid = (HttpContext.Session.GetString(Constant.ApproverID));
                dynamic indicator  = "";
                dynamic errormsg   = "";
                if (status == "Approved")
                {
                    try
                    {
                        foreach (var model in modellist.leaveApprovals)
                        {
                            bool   error    = false;
                            string deletion = "";
                            if (model.OldStatus == "Pending Withdrawal")
                            {
                                status   = "Withdrawal";
                                deletion = "X";
                            }
                            else
                            {
                                deletion = "";
                            }
                            model.FromDateString = model.FromDateString.Replace('-', '/');
                            model.ToDateString   = model.ToDateString.Replace('-', '/');
                            string esbfromdate = model.FromDateString.Split("/")[1] + "/" + model.FromDateString.Split("/")[0] + "/" + model.FromDateString.Split("/")[2];
                            string esbtodate   = model.ToDateString.Split("/")[1] + "/" + model.ToDateString.Split("/")[0] + "/" + model.ToDateString.Split("/")[2];

                            string param = "leaves?pernr_001=" + model.EmployeeID + "&subty_006="
                                           + model.LeaveCode + "&begda_007=" + esbfromdate + "&endda_008=" + esbtodate + "&full_first_sec=" + model.LeaveShift + "&simulation=" + "" + "&Deletion=" + deletion;
                            using (HttpClient client = new HttpClient())
                            {
                                string apiUrl = _rfcconfig.GetSection("MySettings").GetSection("WebApiBaseUrl").Value + param;
                                client.BaseAddress = new Uri(apiUrl);
                                client.Timeout     = TimeSpan.FromMinutes(5);
                                client.DefaultRequestHeaders.Accept.Clear();
                                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                                var responsecli = client.GetAsync(apiUrl);
                                var data        = responsecli.Result;
                                if (data.IsSuccessStatusCode)
                                {
                                    var readTask = data.Content.ReadAsStringAsync();
                                    LEAVEREQUESTDETAILS leaveRequestDetails = JsonConvert.DeserializeObject <LEAVEREQUESTDETAILS>(readTask.Result);
                                    if (leaveRequestDetails != null && leaveRequestDetails.IT_ERROR_TEXT != null)
                                    {
                                        foreach (var detail in leaveRequestDetails.IT_ERROR_TEXT)
                                        {
                                            if (detail.IND == "E")
                                            {
                                                error     = true;
                                                errormsg  = detail.TEXT;
                                                indicator = detail.IND;
                                            }
                                        }
                                        if (error == false)
                                        {
                                            errormsg  = "Successfully updated in SAP";
                                            indicator = "S";
                                        }
                                    }
                                }
                                else
                                {
                                    _logger.LogError("Gateway Timeout Error" + model.EmployeeID);
                                }
                            }
                            model.ErrorMsg   = errormsg;
                            model.Indicator  = indicator;
                            model.ApproverId = Approverid;
                            model.Status     = error == true ? "Error" : status;
                        }
                        Tuple <string, int> result     = _iLeaveapprovalService.SaveLeaveApproval(Mapper.Map <LeaveApprovalServiceViewModel>(modellist));
                        LeaveApprovalModel  leavemodel = new LeaveApprovalModel();
                        if (result.Item2 != -99)
                        {
                            if (status == "Approved" || status == "Withdrawal")
                            {
                                foreach (var model in modellist.leaveApprovals)
                                {
                                    // Mobileno = model.empmobileno;//mobileno add
                                    #region Message for Approved record to Employee
                                    if (result.Item2 != -99)
                                    {
                                        var msgTextapprover = "";
                                        if (model.OldStatus == "Pending Withdrawal")
                                        {
                                            msgTextapprover = "Your Subordinate wants to cancel/ withdraw below leave/attendance requests which were approved in the system." + Environment.NewLine +
                                                              "Please approve / reject the request accordingly" + Environment.NewLine;
                                            Mobileno = model.ApproverMobNo;// "8149102368";
                                        }
                                        else
                                        {
                                            msgTextapprover = "Your below mentioned leaves/attendance requests submitted have been approved." + Environment.NewLine;
                                            Mobileno        = model.empmobileno;//mobileno add "8149102368";//
                                        }
                                        var mesg = msgTextapprover + Environment.NewLine +

                                                   "Employee No:-" + model.EmployeeID + Environment.NewLine +
                                                   "Request:-" + model.LeaveCategory + Environment.NewLine +
                                                   "From Date:-" + model.FromDateString + Environment.NewLine +
                                                   "To Date:-" + model.ToDateString + Environment.NewLine +
                                                   "Days:-" + model.TotalLeaves + " days";
                                        try
                                        {
                                            _SMSUtility.SendSMS(Mobileno, mesg);
                                        }
                                        catch (Exception)
                                        {
                                        }
                                    }
                                }
                            }
                            #endregion
                        }
                        if (result.Item2 != -99)
                        {
                            if (status == "Approved" || status == "Withdrawal")
                            {
                                msg = "LeaveRequest has been Approved  successfully.... ";
                            }
                            else
                            {
                                msg = "LeaveRequest has been Rejected  successfully.... ";
                            }
                            valid = true;
                        }
                        else
                        {
                            msg   = "Error Occured while processing the request....";
                            valid = false;
                        }
                    }
                    catch (Exception ex)
                    {
                        valid = false;
                        msg   = "Error Occured while processing the request....";
                        _logger.LogError(ex, ex.Message);
                    }
                }
                //for reject code
                else
                {
                    foreach (var model in modellist.leaveApprovals)
                    {
                        model.ErrorMsg   = "";
                        model.Indicator  = "W";
                        model.ApproverId = Approverid;
                        if (status == "Rejected" && model.OldStatus == "Pending Withdrawal")
                        {
                            model.Status = "Withdrawal Rejected";
                        }
                        else
                        {
                            model.Status = status;
                        }
                    }
                    Tuple <string, int> result = _iLeaveapprovalService.SaveLeaveApproval(Mapper.Map <LeaveApprovalServiceViewModel>(modellist));

                    LeaveApprovalModel leavemodel = new LeaveApprovalModel();

                    if (result.Item2 != -99)
                    {
                        foreach (var model in modellist.leaveApprovals)
                        {
                            if (result.Item2 != -99)
                            {
                                MobilenoR = model.empmobileno;//mobileno add
                                #region Message for Reject record
                                var msgTextapprover =
                                    "Your below mentioned leaves / attendance requests have been rejected." + Environment.NewLine +
                                    "Employee No:-" + model.EmployeeID + Environment.NewLine +
                                    "Request:-" + model.LeaveCategory + Environment.NewLine +
                                    "From Date:-" + model.FromDateString + Environment.NewLine +
                                    "To Date:-" + model.ToDateString + Environment.NewLine +
                                    "Days:-" + model.TotalLeaves + " days";
                                try
                                {
                                    _SMSUtility.SendSMS(MobilenoR.ToString(), msgTextapprover);
                                }
                                catch (Exception)
                                {
                                }
                            }
                        }

                        #endregion
                        msg   = "LeaveRequest has been Rejected  successfully.... ";
                        valid = true;
                    }
                    else
                    {
                        msg   = "Error Occured while processing the request....";
                        valid = false;
                    }
                }
            }
            catch (Exception ex)
            {
                valid = false;
                msg   = "Error Occured while processing the request....";
                _logger.LogError(ex, ex.Message);
            }
            return(valid + "~" + msg);
        }