public int SubmitRequisition(int empId, List <RequisitionDetail> requisitiondetail)
        {
            try
            {
                // Build Requisition object
                Requisition r1 = new Requisition();
                r1.EmployeeId        = empId;
                r1.RequisitionDate   = DateTime.Now.Date;
                r1.RequisitionStatus = "Pending";

                // Store Requisition and Detail objects in database
                ir.CreateRequisition(r1);
                int reqId = ir.GetLastRequisitionId().RequisitionId;
                for (int i = 0; i < requisitiondetail.Count(); i++)
                {
                    requisitiondetail[i].RequisitionId = reqId;
                    ird.CreateRequisitionDetail(requisitiondetail[i]);
                }

                // Send email to Dept Head
                Employee requestor  = ie.SearchEmployeeByEmpId(r1.EmployeeId);
                Employee deptHead   = ie.SearchEmployeeByEmpId(id.SearchDepartmentByDeptId(requestor.DeptId).HeadId);
                Employee actingHead = FindCurrentActingHeadOfDept(requestor.DeptId, r1.RequisitionDate);

                string subject = "Stationery Requisition - " + requestor.EmployeeName;
                string body    = requestor.EmployeeTitle + ". " + requestor.EmployeeName +
                                 " has just submitted a Requisition to you on the Stationery Store Inventory System (SSIS).\n" +
                                 "Please visit SSIS to review and approve the Requisition. Thank you.";
                ebl.SendEmail(deptHead, subject, body);
                if (actingHead != null) // Email Acting Head if any
                {
                    ebl.SendEmail(actingHead, subject, body);
                }

                return(1); // Success
            }
            catch (Exception e)
            {
                return(0); // Fail
            }
        }
        public ActionResult EmployeeRequisition([Bind] Requisition requisition)
        {
            Employee currentEmployee = (Employee)Session["User"];

            try
            {
                if (ModelState.IsValid)
                {
                    var q = (from x in requisition.RequisitionDetails
                             orderby x.ItemNo
                             select x).ToList();

                    for (int i = 0; i < q.Count() - 1; i++)
                    {
                        if (q[i].ItemNo == q[i + 1].ItemNo)
                        {
                            throw new RequisitionAndPOCreationException("Please ensure the items are not duplicated.");
                        }
                    }
                    if (requisition.RequisitionDetails == null || requisition.RequisitionDetails.Count == 0)
                    {
                        throw new RequisitionAndPOCreationException("Please ensure there are items added in the requisition.");
                    }

                    foreach (var item in requisition.RequisitionDetails)
                    {
                        if (item.Quantity == null || item.Quantity <= 0)
                        {
                            throw new RequisitionAndPOCreationException("Please ensure the item quantity is greater than zero.");
                        }
                        item.OutstandingQuantity = item.Quantity;
                    }

                    reqService.CreateRequisition(requisition, currentEmployee.EmployeeId);
                    pushSvc.NotificationForHeadOnCreate(currentEmployee.EmployeeId.ToString());

                    try
                    {
                        string   emailBody      = requisition.Employee.Department.Head.EmployeeName + ", You have a pending requisition from " + requisition.Employee.EmployeeName + ". Please go to http://" + uSvc.GetBaseUrl() + "/Head/EmployeeRequisition/" + requisition.RequisitionId + " to approve the request.";
                        Delegate delegateRecord = deptService.getDelegatedEmployee(requisition.DepartmentId);
                        if (delegateRecord != null) //if there is a delegate for the department, email will be addressed to the delegate and CC to the head.
                        {
                            emailBody = delegateRecord.Employee.EmployeeName + ", You have a pending requisition from " + requisition.Employee.EmployeeName + ". Please go to http://" + uSvc.GetBaseUrl() + "/Head/EmployeeRequisition/" + requisition.RequisitionId + " to approve the request.";
                            uSvc.SendEmail(new List <string>(new string[] { delegateRecord.Employee.Email }), "New Requisition Pending Approval", emailBody, new List <string>(new string[] { requisition.Employee.Department.Head.Email }));
                        }
                        else
                        {
                            uSvc.SendEmail(new List <string>(new string[] { requisition.Employee.Department.Head.Email }), "New Requisition Pending Approval", emailBody);
                        }
                    }
                    catch (Exception e)
                    {
                        System.Diagnostics.Debug.WriteLine(e.ToString());
                    }
                    return(RedirectToAction("DepartmentRequisitions"));
                }
            }
            catch (RequisitionAndPOCreationException e)
            {
                ViewBag.Error = e.Message.ToString();
            }

            ViewBag.ItemNo = new SelectList(invService.GetAllInventory(), "ItemNo", "Description");
            return(View(requisition));
        }
 public int AddRequisiton(Requisition req)
 {
     return(reqServ.CreateRequisition(req));
 }