public ActionResult ProcessRequestAddServer(ProcessRequestAddServerViewModel viewmodel)
 {
     //assign pending
     if (Request.Form[Constants.FormAction.ACCEPT_ACTION] != null)
     {
         var shifthead = GetCurrentUserName();
         var result = RequestBLO.Current.AcceptRequest(viewmodel.RequestInfo.RequestCode, shifthead,
             viewmodel.RequestInfo.Assignee, Constants.StatusCode.REQUEST_WAITING,
             Constants.TypeOfLog.LOG_ADD_SERVER, true);
         //dang ky ham cho client
         Notify(result.NotificationCodes);
         return RedirectToAction("Detail", "ProcessRequest",
             new { code = viewmodel.RequestInfo.RequestCode, msg = Constants.Message.ACCEPT_REQUEST_ADD_SERVER });
     }
     if (Request.Form[Constants.FormAction.APPROVE_ACTION] != null)
     {
         var result = RequestBLO.Current.ApproveRequestAddServer(viewmodel.RequestInfo.RequestCode, viewmodel.Servers,
             viewmodel.RequestInfo.Assignee, viewmodel.RequestInfo.TaskCode);
         //dang ky ham cho client
         Notify(result.NotificationCodes);
         return RedirectToAction("Detail", "ProcessRequest",
         new { code = viewmodel.RequestInfo.RequestCode, msg = Constants.Message.APPROVE_REQUEST_ADD_SERVER });
     }
     if (Request.Form[Constants.FormAction.EXPORT_ACTION] != null)
     {
         var role = GetCurrentUserRole();
         var st = GetCurrentUserName();
         var staff = AccountBLO.Current.GetAccountByCode(st);
         RequestBLO.Current.ExportProcedure(viewmodel.Servers, viewmodel.CustomerInfo.Customer, staff.Fullname, role);
         return RedirectToAction("Detail", "ProcessRequest",
         new { code = viewmodel.RequestInfo.RequestCode, msg = Constants.Message.PRINT_PROCEDURE });
     }
     if (Request.Form[Constants.FormAction.REJECT_ACTION] != null)
     {
         var assignee = viewmodel.RequestInfo.Assignee;
         if (viewmodel.RequestInfo.Assignee == null)
         {
             assignee = GetCurrentUserName();
         }
         var result = RequestBLO.Current.RejectRequestAddServer(viewmodel.RequestInfo.RequestCode, viewmodel.Servers,
                 assignee, viewmodel.RequestInfo.TaskCode, viewmodel.RequestInfo.Reason);
         //dang ky ham cho client
         Notify(result.NotificationCodes);
         return RedirectToAction("Detail", "ProcessRequest",
             new { code = viewmodel.RequestInfo.RequestCode, msg = Constants.Message.REJECT_REQUEST_ADD_SERVER });
     }
     if (Request.Form[Constants.FormAction.PROCESS_ACTION] != null)
     {
         var shifthead = GetCurrentUserName();
         RequestBLO.Current.AcceptRequest(viewmodel.RequestInfo.RequestCode, shifthead,
            viewmodel.RequestInfo.Assignee, Constants.StatusCode.REQUEST_PROCESSING,
            Constants.TypeOfLog.LOG_ADD_SERVER, false);
         var task = RequestBLO.Current.AssignTask(viewmodel.RequestInfo.RequestCode, shifthead,
            viewmodel.RequestInfo.Assignee);
         //dang ky ham cho client
         if (viewmodel.RequestInfo.Assignee != shifthead)
         {
             Notify(task.NotificationCodes);
         }
         return RedirectToAction("Detail", "ProcessRequest",
             new { code = viewmodel.RequestInfo.RequestCode, msg = Constants.Message.PROCESSING_REQUEST_ADD_SERVER });
     }
     if (Request.Form[Constants.FormAction.REASSIGN_ACTION] != null)
     {
         var shifthead = GetCurrentUserName();
         if (viewmodel.RequestInfo.TaskStatus != Constants.StatusCode.TASK_NOTFINISH)
         {
             var preTask = RequestBLO.Current.CancelTask(viewmodel.RequestInfo.TaskCode,
             viewmodel.RequestInfo.RequestCode, viewmodel.RequestInfo.Assignee, shifthead);
             //dang ky ham cho client
             if (viewmodel.RequestInfo.Assignee != shifthead)
             {
                 Notify(preTask.NotificationCodes);
             }
         }
         var newTask = RequestBLO.Current.ReAssignTask(viewmodel.RequestInfo.TaskCode, viewmodel.RequestInfo.RequestCode,
             viewmodel.RequestInfo.Assignee, viewmodel.RequestInfo.AssignedStaff, shifthead);
         //dang ky ham cho client
         if (viewmodel.RequestInfo.AssignedStaff != shifthead)
         {
             Notify(newTask.NotificationCodes);
         }
         var message = Constants.Message.REASSIGN_TASK + viewmodel.RequestInfo.AssignedStaffName;
         return RedirectToAction("Detail", "ProcessRequest",
             new { code = viewmodel.RequestInfo.RequestCode, msg = message });
     }
     if (Request.Form[Constants.FormAction.ACCEPT_TASK_ACTION] != null)
     {
         //update task
         TaskBLO.Current.UpdateTaskStatus(viewmodel.RequestInfo.TaskCode, Constants.StatusCode.TASK_DOING);
         return RedirectToAction("Detail", "ProcessRequest",
             new { code = viewmodel.RequestInfo.RequestCode, msg = Constants.Message.ACCEPT_TASK });
     }
     if (Request.Form[Constants.FormAction.NOT_FINISHED_TASK_ACTION] != null)
     {
         var result = RequestBLO.Current.NotFinishRequest(viewmodel.RequestInfo.TaskCode, viewmodel.RequestInfo.NotFinishReason);
         Notify(result.NotificationCodes);
         return RedirectToAction("Detail", "ProcessRequest",
            new { code = viewmodel.RequestInfo.RequestCode, msg = Constants.Message.NOT_FINISHED_TASK });
     }
     return RedirectToAction("Index");
 }
 public ActionResult CancelRequestAddServer(ProcessRequestAddServerViewModel viewmodel)
 {
     var customer = GetCurrentUserName();
     var result = RequestBLO.Current.CancelRequestAddServer(viewmodel.RequestInfo.RequestCode, customer,
         viewmodel.RequestInfo.TaskCode);
     //dang ky ham cho client
     Notify(result.NotificationCodes);
     return RedirectToAction("Detail", "Request", new
     { code = viewmodel.RequestInfo.RequestCode, msg = Constants.Message.CANCEL_REQUEST_ADD_SERVER });
 }
 public ActionResult CancelRequestAddServer(ProcessRequestAddServerViewModel viewmodel)
 {
     var status = RequestBLO.Current.GetByKeys(new Request { RequestCode = viewmodel.RequestInfo.RequestCode }).StatusCode;
     if (status == Constants.StatusCode.REQUEST_REJECTED || status == Constants.StatusCode.REQUEST_DONE || status == Constants.StatusCode.REQUEST_CANCELLED)
     {
         return RedirectToAction("Detail", "Request", new
         { code = viewmodel.RequestInfo.RequestCode, msg = Constants.Message.ERROR_CANCEL_REQUEST });
     }
     else
     {
         var customer = GetCurrentUserName();
         var result = RequestBLO.Current.CancelRequestAddServer(viewmodel.RequestInfo.RequestCode, customer,
             viewmodel.RequestInfo.TaskCode);
         //dang ky ham cho client
         Notify(result.NotificationCodes);
         return RedirectToAction("Detail", "Request", new
         { code = viewmodel.RequestInfo.RequestCode, msg = Constants.Message.CANCEL_REQUEST_ADD_SERVER });
     }
 }