ПРИЛОЖЕНИЕ Е. исходные коды основных методов Листинг Е.1. Метод назначения ресурсов на задачи
protected void getResourcebtn_Click(object sender, EventArgs e)
{
try
{
using (SPSite site = new SPSite(_SITE_GUID))
{
using (SPWeb web = site.OpenWeb(_WEB_GUID))
{
int resAmount = 0,
resID=0,
taskID=0;
SPList taskList = web.GetListFromUrl(_TASK_LIST_URL),
resourcesList = web.GetListFromUrl(_RESOURCE_LIST_URL),
settingList=web.GetListFromUrl(_SET_RES_LIST_URL);
SPItem curResItem=null,
curTaskItem = null;
if (resAmounrtb.Text != String.Empty)
{
resAmount = Int32.Parse(resAmounrtb.Text);
getResourcebtn.Enabled = true;
}
Int32.TryParse(resourcesDDL.SelectedItem.Value, out resID);
Int32.TryParse(taskIDDropDL.SelectedItem.Value, out taskID);
bool checkStep = false;
try
{
curResItem = resourcesList.GetItemById(resID);
curTaskItem = taskList.GetItemById(taskID);
checkStep = true; }
catch
{
Controls.Add(new LiteralControl("оставлено "));
}
if (checkStep)
{
int curAmount = 0;
Int32.TryParse(curResItem[_RESOURCE_LIST_AMOUNTFIELD].ToString(), out curAmount);
if (curAmount < resAmount && resourcesrbl.SelectedItem.Value != _SHOW_HUMANS
&& resourcesList.GetItemById(resID)[_RES_LIST_TYPERESFIELD].ToString() != _GET_HUMANS) Controls.Add(new LiteralControl(""));
else
{
if (resourcesrbl.SelectedItem.Value == _SHOW_HUMANS
|| resourcesList.GetItemById(resID)[_RES_LIST_TYPERESFIELD].ToString() == _GET_HUMANS)
{
resAmount = 1;
if (setResponsiblecb.Checked || curTaskItem[_TASK_LIST_RESPFIELD]==null)
{
int lookupID = 0;
SPFieldLookupValue setResponsible;
Int32.TryParse(resourcesDDL.SelectedItem.Value, out lookupID);
if (lookupID != 0)
{
setResponsible = new SPFieldLookupValue(lookupID, resourcesDDL.SelectedItem.Text);
curTaskItem[_TASK_LIST_RESPFIELD] = setResponsible;
curTaskItem.Update();
}
}
}
else
{
curResItem[_RESOURCE_LIST_AMOUNTFIELD] = curAmount - resAmount;
curResItem.Update();
}
//Првоерка на архивное назначение
SPFieldLookupValueCollection curTaskRes = new SPFieldLookupValueCollection(curTaskItem[_TASK_LIST_RESOURCEFIELD].ToString());
curTaskRes.Add(new SPFieldLookupValue(resID, resourcesDDL.SelectedItem.Text));
curTaskItem[_TASK_LIST_RESOURCEFIELD] = curTaskRes;
curTaskItem.Update();
bool createItem = true;
foreach (SPListItem item in settingList.Items)
{
SPFieldLookupValue setResID = new SPFieldLookupValue(item[_SET_LIST_RESIDFIELD].ToString()),
setTaskID = new SPFieldLookupValue(item[_SET_LIST_TASKIDFIELD].ToString());
bool checkArchivebool = false;
if (item[_SETING_LIST_ARCHIVEFIELD] != null)
{
SPFieldBoolean checkArchive = item.Fields.GetField(_SETING_LIST_ARCHIVEFIELD) as SPFieldBoolean;
checkArchivebool = (bool)checkArchive.GetFieldValue(item[_SETING_LIST_ARCHIVEFIELD].ToString());
}
if (setResID.LookupValue.ToString() == resID.ToString() && setTaskID.LookupValue.ToString() == taskID.ToString()&&!checkArchivebool)
{
if (resourcesList.GetItemById(resID)[_RES_LIST_TYPERESFIELD].ToString() != _GET_HUMANS)
{
int i = 0;
Int32.TryParse(item[_SET_LIST_AMOUNTFIELD].ToString(), out i);
i += resAmount;
item[_SET_LIST_AMOUNTFIELD] = i;
item.Update();
}
createItem = false;
}
}
if (createItem)
{
SPListItem setResItem = settingList.AddItem();
setResItem[_SET_LIST_RESIDFIELD] = new SPFieldLookupValue(resID, resourcesDDL.SelectedItem.Text);
setResItem[_SET_LIST_TASKIDFIELD] = new SPFieldLookupValue(taskID, taskIDDropDL.SelectedItem.Value);
setResItem[_SET_LIST_AMOUNTFIELD] = resAmount;
setResItem.Update();
}
resourceslb.Items.Clear();
GetResourceList();
Controls.Add(new LiteralControl(""));
}
}
}
}
}
catch(Exception ex)
{
throw new Exception(ex.Message);
} }
Листинг Е.2. Метод автоматического освобождения ресурсов с задачи
protected void autoFreebtn_Click(object sender, EventArgs e)
{
GenerateView();
try
{
using (SPSite site = new SPSite(_SITE_GUID))
{
using (SPWeb web = site.OpenWeb(_WEB_GUID))
{
int taskID = 0;
SPList resourcesList = web.GetListFromUrl(_RESOURCE_LIST_URL),
settingList = web.GetListFromUrl(_SETTING_RES_LIST_URL);
Int32.TryParse(showTasksDDL.SelectedItem.Value.ToString(), out taskID);
if (showTasksDDL.SelectedItem.Text != _CHOICE_MENU_ITEM && showTasksDDL.SelectedItem.Text!=_NOT_FOUND)
{
foreach (SPListItem item in settingList.Items)
{
bool checkArchivebool = false;
if (item[_SETING_LIST_ARCHIVEFIELD] != null)
{
SPFieldBoolean checkArchive = item.Fields.GetField(_SETING_LIST_ARCHIVEFIELD) as SPFieldBoolean;
checkArchivebool = (bool)checkArchive.GetFieldValue(item[_SETING_LIST_ARCHIVEFIELD].ToString());
}
if (item[_SETTING_LIST_RES_ID] != null && item[_SETTING_LIST_TASK_ID] != null && !checkArchivebool)
{
SPFieldLookupValue taskItemID = new SPFieldLookupValue(item[_SETTING_LIST_TASK_ID].ToString());
SPFieldLookupValue resItemID = new SPFieldLookupValue(item[_SETTING_LIST_RES_ID].ToString());
int tmpRes = 0,
tmpTask = 0;
Int32.TryParse(taskItemID.LookupValue, out tmpTask);
Int32.TryParse(resItemID.LookupValue, out tmpRes);
if (tmpTask == taskID && taskID != 0 && tmpRes != 0)
{
int freeAmount = 0,
curAmount = 0;
SPListItem curResItem = resourcesList.GetItemById(tmpRes);
SPFieldBoolean check = curResItem.Fields.GetField(_RESOURCE_LIST_ENDINGRES_FIELD) as SPFieldBoolean;
bool checkEnding=(bool)check.GetFieldValue(curResItem[_RESOURCE_LIST_ENDINGRES_FIELD].ToString());
if (!checkEnding && curResItem[_RES_LIST_TYPERESFIELD] != null && curResItem[_RES_LIST_TYPERESFIELD].ToString()!=_GET_HUMANS)
{
Int32.TryParse(item[_SETING_LIST_AMOUNTFIELD].ToString(), out freeAmount);
Int32.TryParse(curResItem[_RESOURCE_LIST_AMOUNTFIELD].ToString(), out curAmount);
curAmount += freeAmount;
curResItem[_RESOURCE_LIST_AMOUNTFIELD] = curAmount;
curResItem.Update();
item[_SETING_LIST_AMOUNTFIELD] = 0;
}
item[_SETING_LIST_ARCHIVEFIELD] = 1;
item.Update();
}
}
}
Controls.Add(new LiteralControl(""));
}
else Controls.Add(new LiteralControl("")); }
}
}
catch
{
}
}
Листинг Е.3. Метод освобождения конкретного ресурса с задачи
protected void freebtn_Click(object sender, EventArgs e)
{
GenerateWideView();
try
{
using (SPSite site = new SPSite(_SITE_GUID))
{
using (SPWeb web = site.OpenWeb(_WEB_GUID))
{
if (showResourcesDDL.SelectedItem.Text != _CHOICE_MENU_ITEM && showResourcesDDL.SelectedItem.Text != _NOT_FOUND)
{
SPList resourcesList = web.GetListFromUrl(_RESOURCE_LIST_URL),
settingList = web.GetListFromUrl(_SETTING_RES_LIST_URL);
int resID = 0,
curTaskID=0;
Int32.TryParse(showResourcesDDL.SelectedItem.Value, out resID);
Int32.TryParse(showTasksDDL.SelectedItem.Value, out curTaskID);
SPListItem curResItem = resourcesList.GetItemById(resID);
foreach (SPListItem item in settingList.Items)
{
int tmpUsinResID = 0,
tmpTaskID = 0;
SPFieldLookupValue IDs = new SPFieldLookupValue();
if (item[_SETTING_LIST_TASK_ID] != null)
{
IDs=new SPFieldLookupValue(item[_SETTING_LIST_TASK_ID].ToString());
Int32.TryParse(IDs.LookupValue, out tmpTaskID);
}
if (item[_SETTING_LIST_RES_ID] != null)
{
IDs = new SPFieldLookupValue(item[_SETTING_LIST_RES_ID].ToString());
Int32.TryParse(IDs.LookupValue, out tmpUsinResID);
}
if (item[_SETING_LIST_AMOUNTFIELD] != null && tmpTaskID == curTaskID && tmpUsinResID == resID)
{
int resAmount = 0,
curFreeAmount = 0;
Int32.TryParse(freeAmounttb.Text, out curFreeAmount);
Int32.TryParse(item[_SETING_LIST_AMOUNTFIELD].ToString(), out resAmount);
if (resAmount < curFreeAmount)
{
Controls.Add(new LiteralControl(""));
}
else
{
if (curResItem[_RES_LIST_TYPERESFIELD].ToString() != _GET_HUMANS)
{
int commonAmount = 0;
Int32.TryParse(curResItem[_RESOURCE_LIST_AMOUNTFIELD].ToString(), out commonAmount);
commonAmount += curFreeAmount;
resAmount -= curFreeAmount;
curResItem[_RESOURCE_LIST_AMOUNTFIELD] = commonAmount;
item[_SETING_LIST_AMOUNTFIELD] = resAmount;
curResItem.Update();
item.Update();
}
else
{
item[_SETING_LIST_ARCHIVEFIELD] = 1;
item.Update();
}
Controls.Add(new LiteralControl(""));
}
}
}
}
else Controls.Add(new LiteralControl(""));
}
}
}
catch
{
}
}
Листинг Е.4. Метод закрытия заявки, связных задачи и формирования отчета
protected void closeTasksbtn_Click(object sender, EventArgs e)
{
try
{
using (SPSite site=new SPSite(_SITE_ID))
{
using (SPWeb web=site.OpenWeb(_WEB_ID))
{
SPList taskList = web.GetListFromUrl(_TASK_LIST_URL),
commonList = web.GetListFromUrl(_COMMON_LIST_URL);
int curReqID = 0,
curReqIDInTaskList=0;
bool alertCheck = false;
if (AppDDL.SelectedItem.Text != _CHOICE_MENU_ITEM && AppDDL.SelectedItem.Text != _NOT_FOUND)
{
Int32.TryParse(AppDDL.SelectedItem.Value, out curReqID);
if (curReqID != 0)
{
SPListItem reqItem = commonList.GetItemById(curReqID);
if (reqItem[_COMMON_LIST_REQID_FIELD].ToString() != String.Empty)
{
SortedDictionary commonSolution = new SortedDictionary();
Int32.TryParse(reqItem[_COMMON_LIST_REQID_FIELD].ToString(), out curReqIDInTaskList);
bool check = true;
foreach (SPListItem taskItem in taskList.Items)
{
bool checkSet = true;
SPFieldLookupValue value=new SPFieldLookupValue(taskItem[_TASK_LIST_REQID_FIELD].ToString());
int tmpReqID = ParseLookupID(value.LookupValue);
if (tmpReqID == curReqIDInTaskList && taskItem[_TASK_LIST_CURRENTSTAGE_FIELD]!=null && taskItem[_TASK_LIST_CURRENTSTAGE_FIELD].ToString() != String.Empty
&& taskItem[_TASK_LIST_ORDER_FIELD]!=null && taskItem[_TASK_LIST_ORDER_FIELD].ToString() != String.Empty)
{
string stageField = taskItem[_TASK_LIST_CURRENTSTAGE_FIELD].ToString();
if (stageField.Contains(_TASK_COMPLETE_STAGE_VALUE)&&check)
{
SPList setList=web.GetListFromUrl(_SETTING_LIST_URL);
foreach (SPListItem setItem in setList.Items)
{
SPFieldLookupValue tmpTaskIDValue=null;
int tmpTaskID=0;
Int32.TryParse(taskItem["ID"].ToString(), out tmpTaskID);
if (setItem[_SETTING_LIST_TASKID_FIELD]!=null) tmpTaskIDValue=new SPFieldLookupValue(setItem[_SETTING_LIST_TASKID_FIELD].ToString());
int taskIDinSetList=ParseLookupID(tmpTaskIDValue.LookupValue);
if (tmpTaskID == taskIDinSetList)
{
bool checkArchiveSet=false;
if (setItem[_SETTING_LIST_ARCHIVE_FIELD]!=null)
{
SPFieldBoolean checkArchive = setItem.Fields.GetField(_SETTING_LIST_ARCHIVE_FIELD) as SPFieldBoolean;
checkArchiveSet = (bool)checkArchive.GetFieldValue(setItem[_SETTING_LIST_ARCHIVE_FIELD].ToString());
}
if (!checkArchiveSet)
{
checkSet = false;
break;
}
}
}
if (!checkSet)
{
Controls.Add(new LiteralControl(""));
alertCheck = true;
check = true;
break;
}
else
{
int order = 0;
string solution="";
if (taskItem[_TASK_LIST_SOLUTION_FIELD]!=null) solution = taskItem[_TASK_LIST_SOLUTION_FIELD].ToString();
Int32.TryParse(taskItem[_TASK_LIST_ORDER_FIELD].ToString(), out order);
commonSolution.Add(order, solution);
taskItem[_TASK_LIST_ARCHIVE_FIELD] = 1;
taskItem.Update();
}
}
else
{
check = false;
break;
}
}
}
if (!check)
{
Controls.Add(new LiteralControl(""));
alertCheck = true;
}
else
{
/////////Заполнить в общий список по порядку задач решение, заархивировать задачи (если не все есурсы освобождены - сказать об этом)
string finalSolution = "";
foreach (int key in commonSolution.Keys)
{
string tmpSol = key + " этап: " + commonSolution[key];
finalSolution += tmpSol;
}
reqItem[_COMMON_LIST_SOLUTION_FIELD] = finalSolution;
reqItem.Update();
if (!alertCheck) Controls.Add(new LiteralControl(""));
}
}
}
}
else Controls.Add(new LiteralControl(""));
}
}
}
catch
{
}
}
|