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 })); }
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); }
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 })); }
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); }