public LeaveApplDetails InsertLeaveApplDetails(LeaveApplDetails leaveappldetails, out RETIRNSTATUS status, out string errormsg) { try { //if (!validateleaves(leaveappldetails.leavecode, leaveappldetails.empcode, leaveappldetails.leavefrom, leaveappldetails.leaveto, out errormsg)) if (!validateleaves(leaveappldetails.LeaveCode, leaveappldetails.EmpCode, Convert.ToDecimal(leaveappldetails.LeaveDays), out errormsg)) { status = RETIRNSTATUS.FAIL; return(null); } using (MobileContext context = new MobileContext()) { using (var transaction = context.Database.BeginTransaction()) { try { // leaveappldetails.leavedays = calculatenoofdays(leaveappldetails.leavefrom, leaveappldetails.leaveto, leaveappldetails.halfdayfrom, leaveappldetails.halfdayto); Employees employeeobj = getemployee(leaveappldetails.EmpCode); leaveappldetails.EmpName = employeeobj.Name; //leaveappldetails.RecommendedId = employeeobj.RecommendedBy; //leaveappldetails.ApprovedId = employeeobj.ApprovedBy; //leaveappldetails.ApprovedName = getemployee(leaveappldetails.ApprovedId)?.Name; //leaveappldetails.RecommendedName = getemployee(leaveappldetails.RecommendedId)?.Name; updateusedleaves(leaveappldetails.EmpCode, leaveappldetails.LeaveDays, context); leaveappldetails.Status = STATUS.NEW.ToString(); leaveappldetails.AddDate = DateTime.Now; context.LeaveApplDetails.Add(leaveappldetails); if (context.SaveChanges() > 0) { transaction.Commit(); status = RETIRNSTATUS.PASS; return(leaveappldetails); } transaction.Rollback(); errormsg = "error occured, failed to apply leaves"; status = RETIRNSTATUS.FAIL; return(null); } catch (Exception ex) { transaction.Rollback(); throw ex; } } } } catch (Exception ex) { throw ex; } }
public async Task <IActionResult> ApplyLeaveRequest([FromBody] LeaveApplDetails leaveApplDetails) { if (leaveApplDetails == null) { return(Ok(new APIResponse() { STATUS = APISTATUS.FAIL.ToString(), Response = "Request is empty." })); } try { RETIRNSTATUS status; string errorMsg = string.Empty; LeaveApplDetails result = new leaveRequestHelper().InsertLeaveApplDetails(leaveApplDetails, out status, out errorMsg); if (status == RETIRNSTATUS.PASS) { return(Ok(new APIResponse() { STATUS = APISTATUS.PASS.ToString(), Response = result })); } return(Ok(new APIResponse() { STATUS = APISTATUS.FAIL.ToString(), Response = errorMsg })); } catch (Exception ex) { return(Ok(new APIResponse() { STATUS = APISTATUS.FAIL.ToString(), Response = ex.Message })); } }