You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
202 lines
8.1 KiB
202 lines
8.1 KiB
using EasyBL.WebApi.Message;
|
|
using Entity.Sugar;
|
|
using SqlSugar.Base;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace EasyBL.WEBAPP
|
|
{
|
|
public class CalendarService : ServiceBase
|
|
{
|
|
#region 抓去行事曆資料
|
|
|
|
/// <summary>
|
|
/// 函式名稱:GetList
|
|
/// 函式說明:抓去行事曆資料
|
|
/// </summary>
|
|
/// <param name="i_crm">todo: describe i_crm parameter on GetList</param>
|
|
/// <returns>
|
|
/// 回傳 rm(Object)
|
|
///</returns>
|
|
public ResponseMessage GetList(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
//HttpContext hc = HttpContext.Current;
|
|
//string outlook_userName = ClaimsPrincipal.Current.FindFirst("name").Value;
|
|
var sStartDate = _fetchString(i_crm, @"StartDate");
|
|
var sEndDate = _fetchString(i_crm, @"EndDate");
|
|
var sCalType = _fetchString(i_crm, @"CalType");
|
|
var sOpenMent = _fetchString(i_crm, @"OpenMent");
|
|
|
|
var rStartDate = Convert.ToDateTime(sStartDate);
|
|
var rEndDate = Convert.ToDateTime(sEndDate);
|
|
const string sSQL = @"SELECT DISTINCT MemberID+',' FROM dbo.OTB_SYS_Members WHERE DepartmentID IN (SELECT * FROM [dbo].[OFN_SYS_GetParentDepartmentIdByUserID](@OrgID,@UserID)) FOR XML PATH('')";
|
|
var dic_pm = new Dictionary<string, string>
|
|
{
|
|
{ @"OrgID", i_crm.ORIGID },
|
|
{ @"UserID", i_crm.USERID }
|
|
};
|
|
|
|
var sParentDeptUsers = db.Ado.GetString(sSQL, dic_pm);
|
|
|
|
var saCalendar = db.Queryable<OTB_SYS_Calendar>()
|
|
.OrderBy(x => x.StartDate)
|
|
.Where(x => x.OrgID == i_crm.ORIGID && x.StartDate.Date >= rStartDate.Date && x.EndDate.Date <= rEndDate.Date)
|
|
.Where(x => x.UserID == i_crm.USERID
|
|
|| (x.OpenMent == @"G" && x.GroupMembers.Contains(i_crm.USERID))
|
|
|| (x.OpenMent == @"D" && sParentDeptUsers.Contains(x.UserID))
|
|
|| x.OpenMent == @"C")
|
|
.Where(x => sCalType.Contains(x.CalType))
|
|
.Where(x => sOpenMent.Contains(x.OpenMent))
|
|
.Where(x => !x.DelStatus)
|
|
.ToList();
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, saCalendar);
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(CalendarService), @"行事曆", @"GetList(抓去行事曆資料)", @"", @"", @"");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
|
|
#endregion 抓去行事曆資料
|
|
|
|
#region 拆入一條曆資料
|
|
|
|
/// <summary>
|
|
/// 函式名稱:GetList
|
|
/// 函式說明:拆入一條曆資料
|
|
/// </summary>
|
|
/// <param name="i_crm">todo: describe i_crm parameter on Add</param>
|
|
/// <returns>
|
|
/// 回傳 rm(Object)
|
|
///</returns>
|
|
public ResponseMessage Add(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
var sCalType = _fetchString(i_crm, @"CalType");
|
|
var UserID = _fetchString(i_crm, @"UserID") ?? i_crm.USERID;
|
|
var sTitle = _fetchString(i_crm, @"Title");
|
|
var sDescription = _fetchString(i_crm, @"Description");
|
|
var sStartDate = _fetchString(i_crm, @"StartDate");
|
|
var sEndDate = _fetchString(i_crm, @"EndDate");
|
|
var sImportment = _fetchString(i_crm, @"Importment");
|
|
var sColor = _fetchString(i_crm, @"Color");
|
|
var sAllDay = _fetchString(i_crm, @"AllDay");
|
|
var sOpenMent = _fetchString(i_crm, @"OpenMent");
|
|
var sGroupMembers = _fetchString(i_crm, @"GroupMembers");
|
|
var sRelationId = _fetchString(i_crm, @"RelationId");
|
|
var sUrl = _fetchString(i_crm, @"Url");
|
|
var sMemo = _fetchString(i_crm, @"Memo") ?? "";
|
|
|
|
var oCalendar = new OTB_SYS_Calendar
|
|
{
|
|
OrgID = i_crm.ORIGID,
|
|
UserID = UserID,
|
|
CalType = sCalType,
|
|
Title = sTitle,
|
|
Description = sDescription,
|
|
StartDate = Convert.ToDateTime(sStartDate),
|
|
EndDate = Convert.ToDateTime(sEndDate),
|
|
Importment = sImportment,
|
|
Color = sColor,
|
|
AllDay = sAllDay == @"1",
|
|
OpenMent = sOpenMent,
|
|
GroupMembers = sGroupMembers,
|
|
Url = sUrl,
|
|
RelationId = sRelationId,
|
|
Editable = null,
|
|
ClassName = null,
|
|
Memo = sMemo,
|
|
CreateUser = i_crm.USERID,
|
|
CreateDate = DateTime.Now,
|
|
ModifyUser = i_crm.USERID,
|
|
ModifyDate = DateTime.Now,
|
|
DelStatus = false
|
|
};
|
|
var sNo = db.Insertable<OTB_SYS_Calendar>(oCalendar).ExecuteReturnBigIdentity();
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, sNo);
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(CalendarService), @"行事曆", @"Add(拆入一條曆資料)", @"", @"", @"");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
|
|
|
|
|
|
#endregion 拆入一條曆資料
|
|
|
|
|
|
#region 刪除行事曆
|
|
|
|
/// <summary>
|
|
/// 刪除行事曆
|
|
/// </summary>
|
|
/// <param name="relationId"></param>
|
|
public void DeleteCalendar(string orgID, string userID, string relationId)
|
|
{
|
|
var sMsg = string.Empty;
|
|
string fnName = nameof(DeleteCalendar);
|
|
var db = SugarBase.GetIntance();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
var oTB_SYS_Calendars = db.Queryable<OTB_SYS_Calendar>()
|
|
.Where( x => x.OrgID == orgID)
|
|
.WhereIF(!string.IsNullOrEmpty(userID), x => x.UserID == userID)
|
|
.WhereIF(!string.IsNullOrEmpty(relationId), x => x.RelationId == relationId)
|
|
.ToList();
|
|
oTB_SYS_Calendars.ForEach(x => { x.DelStatus = true; });
|
|
if (oTB_SYS_Calendars.Count > 0)
|
|
{
|
|
db.Updateable(oTB_SYS_Calendars).ExecuteCommand();
|
|
}
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + @"Param:relationId = " + relationId, ex, orgID, userID, nameof(CalendarService), @"行事曆", fnName, @"", @"", @"");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|